Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, with a smattering of Common Changelog thrown in, most notably references, authors and prefixes. This project adheres to Semantic Versioning.

Unreleased

0.37.0 - 2024-05-26

Added

Changed

  • Bump slack-sdk from 3.27.1 to 3.27.2

0.36.0 - 2024-05-04

Added

  • Replace flake8, isort and black with ruff (#1027)
  • Add Python 3.12 (#1028)

Changed

  • Update Github Actions (#1008)
  • Bump slack-sdk from 3.21.3 to 3.27.1
  • Bump httpx from 0.24.1 to 0.27.0
  • Bump pydantic from 2.3.0 to 2.7.1
  • Bump cryptography from 41.0.3 to 42.0.4
  • Bump aiohttp from 3.8.5 to 3.9.5
  • Bump urllib3 from 1.26.16 1.26.18
  • Bump structlog from 23.1.0 to 24.1.0
  • Bump redis from 5.0.0 to 5.0.4
  • Bump pyee from 11.0.0 to 11.1.0
  • Bump aioboto3 from 11.3.0 to 12.4.0
  • Bump tzdata from 2023.3 to 2024.1
  • Bump aiosqlite from 0.19.0 to 0.20.0
  • Bump hiredis from 2.2.3 to 2.3.2

0.35.0 - 2023-09-03

Added

  • Incoming requests/events from Slack that the Slack App is subscribed to, will be logged when LOGLEVEL is set to DEBUG (#876)

Changed

  • Breaking: the optional init() method of plugins is now expected to be async. This allows plugin authors to interact with Slack during plugin initialization through Slack Machine's plugin API. (#868)
  • Standard app manifest for Slack Machine now also enables listening for the app_home_opened event
  • Bump aiosqlite from 0.18.0 to 0.19.0
  • Bump apscheduler from 3.10.1 to 3.10.4
  • Bump redis from 4.6.0 to 5.0.0
  • Bump pyee from 10.0.2 to 11.0.0
  • Bump pydantic from 2.2.1 to 2.3.0

Fixed

  • Use conversations_setTopic instead of channels_setTopic for setting channel topic (#869 by @jogendra)

0.34.2 - 2023-08-13

Fixed

  • Users indexed by email and related functions are now exposed through the plugin interface (#852)

0.34.1 - 2023-08-13

Added

  • Slack users are now indexed by their email as well, allowing fast lookups by email (#849)

Fixed

  • All logging in Slack Machine is now done through structlog instead of the Python stdlib logger (#850)

0.34.0 - 2023-08-13

Added

Changed

  • Bump httpx from 0.24.0 to 0.24.1
  • Bump aiohttp from 3.8.4 to 3.8.5
  • Bump certifi from 2022.12.7 to 2023.7.22
  • Bump pyee from 9.1.0 to 10.0.2
  • Bump pydantic from 1.10.7 to 2.1.1 (#840)

Removed

  • Breaking: Remove Python 3.7 support (#846)

0.33.0 - 2023-05-15

Added

Changed

  • Breaking: move Message class from machine.plugins.base to machine.plugins.message
  • Use dots only for referencing the fully-qualified name of classes and functions instead of using a colon before the class name
  • Bump tzdata from 2022.6 to 2023.3
  • Bump slack-sdk from 3.19.4 to 3.21.3
  • Bump aioboto3 from 10.1.0 to 11.2.0
  • Bump aiohttp from 3.8.3 to 3.8.4
  • Bump redis from 4.3.5 to 4.5.5
  • Bump hiredis from 2.0.0 to 2.2.3
  • Bump pydantic from 1.10.2 to 1.10.7
  • Bump httpx from 0.23.1 to 0.24.0
  • Bump apscheduler from 3.9.1.post1 to 3.10.1
  • Bump structlog from 22.3.0 to 23.1.0
  • Bump pyee from 9.0.4 to 9.1.0

0.32.0 - 2022-11-27

Added

  • Add Python 3.11 support (#676)
  • Expose web client of Slack SDK (#677)

Changed

  • Bump dill from 0.3.5.1 to 0.3.6
  • Bump slack-sdk from 3.19.1 to 3.19.4
  • Bump tzdata from 2022.5 to 2022.6
  • Bump apscheduler from 3.9.1 to 3.9.1.post1
  • Bump httpx from 0.23.0 to 0.23.1
  • Bump redis from 4.3.4 to 4.3.5
  • Bump structlog from 22.1.0 to 22.3.0

Fixed

0.31.0 - 2022-10-21

Changed

  • Moved Slack Machine community chat to Slack
  • Type-hint coverage is now 100% so mypy is happy (#633)
  • Update pyproject.toml to conform to Poetry 1.2 dependency specification (#657)
  • Replace dacite with pydantic to create models for Slack API interactions (#659)
  • Bump aiohttp from 3.8.1 to 3.8.3
  • Bump slack-sdk from 3.18.3 to 3.19.1
  • Bump tzdata from 2022.4 to 2022.5
  • Bump aioboto3 from 10.0.0 to 10.1.0
  • Add changelog to keep track of updates
  • Move to structlog for logging, fixes #599 (#663)

Removed

  • Remove unused settings: DISABLE_HTTP, HTTP_SERVER_HOST, HTTP_SERVER_PORT, HTTP_SERVER_BACKEND, HTTPS_PROXY, KEEP_ALIVE

0.30.0 - 2022-08-30

Changed

  • Bump slack-sdk from 3.18.1 to 3.18.3 (#619)

Removed

  • Breaking: Remove sync version, it's all async now baby! :dancing_men:

0.28.2 - 2022-08-30

Changed

  • Make handling changed message configurable in async mode (#613)
  • Add tests for slack client (#614)

0.28.1 - 2022-08-28

Added

  • Add support for pinning/unpinning of messages (#611)

Changed

0.28.0 - 2022-08-28

Added

  • Add support to async version for scheduling messages and running plugin functions on a schedule (#610)

0.27.2 - 2022-08-14

Fixed

  • aioboto3 types are only relevant for type checking, so move imports inside type checking guard

0.27.1 - 2022-08-14

Changed

  • Add documentation for DynamoDB storage backend (#603)

Fixed

  • Add aioboto3 as optional dependency so extras can be satisfied (#604)

0.27.0 - 2022-08-14

Added

  • Add DynamoDB storage backend (#602 by @jkmathes)
  • Add black, isort and other linters/formatters to create uniform code style (#597)

Changed

  • Update documentation for builtin plugins, fixes #396 (#598)
  • Replace requests with httpx for async http calls in meme plugin and share memes as blocks (#600)
  • Replace requests with httpx for async http calls in Google image search plugin (#601)

0.26.1 - 2022-08-13

Fixed

  • Various documentation fixes
  • Fix project metadata

0.26.0 - 2022-08-13

Added

Changed

  • Bump redis from 4.2.0 to 4.3.4
  • Bump slack-sdk from 3.15.2 to 3.18.1

0.25.0 - 2022-03-27

Changed

  • Bump redis from 4.0.2 to 4.2.0
  • Bump slack-sdk from 3.12.0 to 3.15.2
  • Bump requests from 2.26.0 to 2.27.1
  • Bump apscheduler from 3.8.1 to 3.9.1

Fixed

  • Fix expected payload of events when updating channel cache, fixes #526 (#565)

0.24.0 - 2021-12-01

Added

  • Add Python 3.10 support

Changed

  • Bump redis from 3.5.3 to 4.0.2
  • Bump apscheduler from 3.8.0 to 3.8.1
  • Move documentation from Sphinx to MkDocs and Material for MkDocs for beautiful docs (#514)
  • Switch from slackclient to slack_sdk library, fixes #443

Removed

  • Breaking: Remove Python 3.6 support

0.23.2 - 2021-10-17

Fixed

  • Bring back script to run Slack Machine

0.23.1 - 2021-10-17

Changed

  • Document all contributors

Fixed

  • Install the right extra packages for Redis

Removed

  • Breaking: HBase storage backend has been removed

0.23.0 - 2021-10-16

Changed

  • Switch to Poetry for project and dependency management
  • Bump apscheduler from 3.7.0 to 3.8.0

Fixed

  • Various CI fixes

0.22.0 - 2021-09-12

Changed

  • Bump dill from 0.3.3 to 0.3.4
  • Bump requests from 2.25.1 to 2.26.0
  • Bump cython from 0.29.23 to 0.29.24
  • Use Github Actions for CI and drop Travis (#492)
  • Switch master branch to main to get with the times

Fixed

  • Only cover named channels when attempting to find a channel by name (#483 by @arusahni)

0.21.1 - 2021-08-01

Changed

  • Add channel members to Channel model and keep members up-to-date through Slack events (#485 by @arusahni)

0.21.0 - 2021-04-25

Added

  • Add Gitter chat room to facilitate discussions about Slack Machine
  • Add Role-based access controls feature for plugins (#321 by @davidolrik)
  • Add Python 3.9 support

Changed

  • Move to Dependabot from PyUp to manage automatic dependency updates
  • Bump slackclient from 2.7.3 to 2.9.3
  • Bump requests from 2.24.0 to 2.25.1
  • Bump dill from 0.3.2 to 0.3.3
  • Bump dacite from 1.5.1 to 1.6.0
  • Bump cython from 0.29.21 to 0.29.23
  • Bump apscheduler from 3.6.3 to 3.7.0

Fixed

  • Make channel topic creator an optional field in the Channel model (#439 by @eguven)
  • Always respond to plugin functions decorated with @listen_to, also when bot is addressed in direct message (#436 by @eddyg)
  • Use conversations.open endpoint on Slack WebAPI instead of im.open endpoint to open direct message conversations, because the latter is deprecated (#401 by @cchadowitz-pf)

0.20.1 - 2020-07-23

Fixed

  • Use conversations.info endpoint on Slack WebAPI instead of channels.info endpoint, which is deprecated and mark optional fields as such in User and Channel objects (#386 by @repudi8or)

0.20.0 - 2020-07-22

Added

  • Support Python 3.8

Changed

  • Bump dacite from 1.0.2 to 1.5.1
  • Bump redis from 3.3.11 to 3.5.3
  • Bump cython from 0.29.14 to 0.29.21
  • Bump dill from 0.3.1.1 to 0.3.2
  • Bump requests from 2.22.0 to 2.24.0
  • Bump slackclient from 2.5.0 to 2.7.3
  • Add is_thread property to Message class (#286 by @davidolrik)
  • Use conversations.list endpoint on Slack WebAPI instead of channels.list endpoint, which is deprecated and include private channels in channel cache (#329 by @repudi8or)
  • Include direct messages in channel cache
  • Add pre-commit hooks to verify basic things before commiting

Fixed

  • deleted property is optional on user responses from Slack WebAPI

0.19.2 - 2020-01-05

Changed

  • Breaking:: thread_ts property on the Message class has been renamed to ts

Fixed

  • EchoPlugin will not respond to itself anymore
  • Fixed PyPI classifiers

0.19.1 - 2020-01-05

Fixed

  • Fix help plugin
  • Fix various typos in the documentation

0.19.0 - 2020-01-05

Changed

  • Major version upgrade of slackclient from 1.3.1 to 2.5.0
  • Refactor code to capture Slack API responses in dataclasses for easier development
  • Split internal Slack client into low-level client and high-level facade
  • Start adding type hints
  • Breaking: self.users and self.channels on the base plugin class now return different objects than before. See API documentation for more details. These properties should behave more consistently however, even in workspaces with many users.

Removed

  • Breaking: Remove catch_all() method from base plugin class because it's not supported by the slackclient library anymore
  • Breaking: The *_webapi methods to send messages do not exist anymore, use the regular counterparts instead. All messages are now sent using the Slack WebAPI. The RTM API is still used for listening to messages and events

0.18.2 - 2019-11-17

Fixed

  • Fix bottle import

0.18.1 - 2019-11-17

Changed

  • Bump apscheduler from 3.5.3 to 3.6.3
  • Bump redis from 3.2.0 to 3.3.11
  • Bump happybase from 1.1.0 to 1.2.0
  • Bump cython from 0.29.6 to 0.29.14
  • Bump dill from 0.2.9 to 0.3.1.1
  • Bump bottle from 0.12.16 to 0.12.17
  • Include bottle as a vendored dependency to not be dependent on the long release cycles of bottle
  • Fix deprecation warnings to prepare for Python 3.8
  • Allow matching multiline messages in @listen_to and @respond_to decorators (#178 by @seerickcode)

Removed

  • Breaking: drop support for Python 3.4 and 3.5

0.18.0 - 2019-03-10

Changed

  • Bump slackclient from 1.3.0 to 1.3.1
  • Bump dill from 0.2.8.2 to 0.2.9
  • Bump bottle from 0.12.13 to 0.12.16
  • Bump redis from 2.10.6 to 3.2.0
  • Bump Cython from 0.28.5 to 0.29.6

0.17.0 - 2018-11-10

Added

0.16.1 - 2018-09-28

Changed

  • Allow not only direct subclasses of MachineBasePlugin be plugins, but also deeper decendants (#95 by @gfreezy)
  • Bump slackclient from 1.2.1 to 1.3.0 (#88)

0.16.0 - 2018-09-06

Added

  • Add HBase storage backend

0.15.0 - 2018-09-03

Added

  • Add optional keep-alive ping in background thread to keep the connection to Slack alive (#79 by @preludedrew)

This helps when Slack Machine is running in environments that occasionally "go to sleep", such as Heroku

Changed

  • Bump apscheduler from 3.5.1 to 3.5.3
  • Fix Python 3.7 builds by using Xenial distro

0.14.0 - 2018-07-31

Added

  • Add Python 3.7 support

Changed

  • Add support for configuring HTTP proxy for Slack client (#69 by @gfreezy)

0.13.2 - 2018-07-04

Changed

  • Make HTTP server host & port configurable (#64 by @pirogoeth)
  • Bump dill from 0.2.7.1 to 0.2.8.2
  • Bump slackclient from 1.1.3 to 1.2.1

0.13.1 - 2018-03-06

Changed

  • Mention webserver functionality in README

0.13.0 - 2018-03-06 [YANKED]

:warning: NOTE: release was yanked due to lack of documentation

Added

  • Add webserver functionality so plugins can have functions triggered by HTTP requests

Changed

  • Bump slackclient from 1.1.2 to 1.1.3

0.12.2 - 2018-02-26

Changed

  • Bump slackclient from 1.1.0 to 1.1.2
  • Memes plugin: support custom meme templates

Fixed

  • Plugin help now properly distinguishes between robot or human help

0.12.1 - 2018-01-26

Fixed

  • Fix tests for new plugins

0.12.0 - 2018-01-26

Added

  • Add Google Image search plugin
  • Add memes plugin based on Memegen

0.11.0 - 2018-01-22

Added

  • Add help feature so users can see what a bot can do based on documentation provided by plugin authors

0.10.0 - 2018-01-21

Added

  • Add optional plugin initialization
  • Allow plugins to mark settings as required

Changed

  • Bump apscheduler from 3.4.0 to 3.5.1

0.9.0 - 2017-12-03

Changed

  • Bump apscheduler from 3.3.1 to 3.4.0
  • Bump slackclient from 1.0.9 to 1.1.0
  • WebAPI methods will return deserialized API responses (#14 by @pirogoeth)

Removed

  • Breaking: drop support for Python 3.3

0.8.0 - 2017-10-15

Added

  • Add support for event listeners and emitting events for inter-plugin communication

0.7.0 - 2017-10-13

Added

  • Add scheduling functionality to send messages and run plugin functions on a schedule

Changed

  • Refactor client classes to be singletons so they don't need to be persisted by APScheduler
  • Add PyUp to automatically update dependencies

0.6.0 - 2017-09-14

Added

  • Add pluggable plugin storage so plugins can store data
  • Add 2 storage backends: in-memory and Redis

Changed

  • Drastically improve tests and increase coverage

0.5.0 - 2017-09-09

Changed

  • Finish documentation

0.4.0 - 2017-09-06

Added

  • Document how to create plugins + plugin API

Changed

  • Decorators can now be used multiple times on the same function

0.3.0 - 2017-09-03

Added

  • Basic documentation

0.2.0 - 2017-09-01

Added

  • Add tests and CI

0.1.0 - 2017-08-29

First release. Rejoice! :wave:

Added

  • A simple, yet powerful and extendable Slack bot framework