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.40.1 - 2025-08-20
Changed
- Bumped various dependencies
Fixed
- Update
enterprisemodel type to adhere to the Slack API (#1260 by @AlexanderOtavka)
0.40.0 - 2024-11-24
Changed
- Replace Poetry with uv (#1218)
- Replace Tox with Nox (#1218)
- Replace Dependabot with Renovate (#1220)
- Bump
pydanticfrom 2.10.0 to 2.10.1
0.39.0 - 2024-11-22
Added
Changed
- Bump
slack-sdkfrom 3.33.3 to 3.33.4 (fixes incompatibility with newer versions ofaiohttp) - Bump
pydanticfrom 2.9.2 to 2.10.0 - Bump
aiohttpfrom 3.10.11 to 3.11.7
0.38.1 - 2024-11-17
Fixed
aiohttpversions 3.11.0 and higher were causing issues, soaiohttpis temporarily restricted to versions < 3.11 (#1201)
0.38.0 - 2024-11-16
Added
- Add Python 3.13 support (#1199)
Changed
- Bump
slack-sdkfrom 3.27.2 to 3.33.3 - Bump
pydanticfrom 2.7.1 to 2.9.2 - Bump
structlogfrom 24.1.0 to 24.4.0 - Bump
redisfrom 5.0.4 to 5.2.0 - Bump
hiredisfrom 2.3.2 to 3.0.0 - Bump
aioboto3from 12.4.0 to 13.2.0 - Bump
urllib3from 1.26.18 to 1.26.19 - Bump
httpxfrom 0.27.0 to 0.27.2 - Bump
multidictfrom 6.0.5 to 6.1.0 - Bump
cryptographyfrom 42.0.4 to 43.0.1 - Bump
aiohttpfrom 3.9.5 to 3.10.11 - Bump
tzdatafrom 2024.1 to 2024.2 - Bump
dillfrom 0.3.8 to 0.3.9
Fixed
- Add rate limit handling to Slack client to improve Slack Machine's resilience when interacting with Slack's API, especially when working with large workspaces (#1194 by @sprutner and @jasonwbarnett)
Removed
- Breaking: Remove Python 3.8 support (#1199)
0.37.0 - 2024-05-26
Added
- Support for Block actions, coming from interactive elements from Block Kit (#1034 with help from pawelros)
Changed
- Bump
slack-sdkfrom 3.27.1 to 3.27.2
0.36.0 - 2024-05-04
Added
Changed
- Update Github Actions (#1008)
- Bump
slack-sdkfrom 3.21.3 to 3.27.1 - Bump
httpxfrom 0.24.1 to 0.27.0 - Bump
pydanticfrom 2.3.0 to 2.7.1 - Bump
cryptographyfrom 41.0.3 to 42.0.4 - Bump
aiohttpfrom 3.8.5 to 3.9.5 - Bump
urllib3from 1.26.16 1.26.18 - Bump
structlogfrom 23.1.0 to 24.1.0 - Bump
redisfrom 5.0.0 to 5.0.4 - Bump
pyeefrom 11.0.0 to 11.1.0 - Bump
aioboto3from 11.3.0 to 12.4.0 - Bump
tzdatafrom 2023.3 to 2024.1 - Bump
aiosqlitefrom 0.19.0 to 0.20.0 - Bump
hiredisfrom 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
LOGLEVELis set toDEBUG(#876)
Changed
- Breaking: the optional
init()method of plugins is now expected to beasync. 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_openedevent - Bump
aiosqlitefrom 0.18.0 to 0.19.0 - Bump
apschedulerfrom 3.10.1 to 3.10.4 - Bump
redisfrom 4.6.0 to 5.0.0 - Bump
pyeefrom 10.0.2 to 11.0.0 - Bump
pydanticfrom 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
- Add support to set topic on channels (#839 by @jogendra)
- Add SQLite storage backend (#844 by @cp-richard)
Changed
- Bump
httpxfrom 0.24.0 to 0.24.1 - Bump
aiohttpfrom 3.8.4 to 3.8.5 - Bump
certififrom 2022.12.7 to 2023.7.22 - Bump
pyeefrom 9.1.0 to 10.0.2 - Bump
pydanticfrom 1.10.7 to 2.1.1 (#840)
Removed
- Breaking: Remove Python 3.7 support (#846)
0.33.0 - 2023-05-15
Added
- Add support for slash commands (#787)
Changed
- Breaking: move
Messageclass frommachine.plugins.basetomachine.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
tzdatafrom 2022.6 to 2023.3 - Bump
slack-sdkfrom 3.19.4 to 3.21.3 - Bump
aioboto3from 10.1.0 to 11.2.0 - Bump
aiohttpfrom 3.8.3 to 3.8.4 - Bump
redisfrom 4.3.5 to 4.5.5 - Bump
hiredisfrom 2.0.0 to 2.2.3 - Bump
pydanticfrom 1.10.2 to 1.10.7 - Bump
httpxfrom 0.23.1 to 0.24.0 - Bump
apschedulerfrom 3.9.1.post1 to 3.10.1 - Bump
structlogfrom 22.3.0 to 23.1.0 - Bump
pyeefrom 9.0.4 to 9.1.0
0.32.0 - 2022-11-27
Added
Changed
- Bump
dillfrom 0.3.5.1 to 0.3.6 - Bump
slack-sdkfrom 3.19.1 to 3.19.4 - Bump
tzdatafrom 2022.5 to 2022.6 - Bump
apschedulerfrom 3.9.1 to 3.9.1.post1 - Bump
httpxfrom 0.23.0 to 0.23.1 - Bump
redisfrom 4.3.4 to 4.3.5 - Bump
structlogfrom 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
dacitewithpydanticto create models for Slack API interactions (#659) - Bump
aiohttpfrom 3.8.1 to 3.8.3 - Bump
slack-sdkfrom 3.18.3 to 3.19.1 - Bump
tzdatafrom 2022.4 to 2022.5 - Bump
aioboto3from 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-sdkfrom 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
0.28.1 - 2022-08-28
Added
- Add support for pinning/unpinning of messages (#611)
Changed
- Add support for listening to message change events (#594 with help from @cchadowitz-pf)
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
aioboto3types 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
aioboto3as optional dependency so extras can be satisfied (#604)
0.27.0 - 2022-08-14
Added
- Add DynamoDB storage backend (#602 by @jkmathes)
- Add
black,isortand other linters/formatters to create uniform code style (#597)
Changed
- Update documentation for builtin plugins, fixes #396 (#598)
- Replace
requestswithhttpxfor async http calls in meme plugin and share memes as blocks (#600) - Replace
requestswithhttpxfor 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
- Slack Machine now supports asyncio using the Slack Events API and Socket Mode! :racing_car:
Changed
- Bump
redisfrom 4.2.0 to 4.3.4 - Bump
slack-sdkfrom 3.15.2 to 3.18.1
0.25.0 - 2022-03-27
Changed
- Bump
redisfrom 4.0.2 to 4.2.0 - Bump
slack-sdkfrom 3.12.0 to 3.15.2 - Bump
requestsfrom 2.26.0 to 2.27.1 - Bump
apschedulerfrom 3.8.1 to 3.9.1
Fixed
0.24.0 - 2021-12-01
Added
- Add Python 3.10 support
Changed
- Bump
redisfrom 3.5.3 to 4.0.2 - Bump
apschedulerfrom 3.8.0 to 3.8.1 - Move documentation from Sphinx to MkDocs and Material for MkDocs for beautiful docs (#514)
- Switch from
slackclienttoslack_sdklibrary, 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
apschedulerfrom 3.7.0 to 3.8.0
Fixed
- Various CI fixes
0.22.0 - 2021-09-12
Changed
- Bump
dillfrom 0.3.3 to 0.3.4 - Bump
requestsfrom 2.25.1 to 2.26.0 - Bump
cythonfrom 0.29.23 to 0.29.24 - Use Github Actions for CI and drop Travis (#492)
- Switch
masterbranch tomainto get with the times
Fixed
0.21.1 - 2021-08-01
Changed
- Add channel members to
Channelmodel 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
slackclientfrom 2.7.3 to 2.9.3 - Bump
requestsfrom 2.24.0 to 2.25.1 - Bump
dillfrom 0.3.2 to 0.3.3 - Bump
dacitefrom 1.5.1 to 1.6.0 - Bump
cythonfrom 0.29.21 to 0.29.23 - Bump
apschedulerfrom 3.6.3 to 3.7.0
Fixed
- Make channel topic creator an optional field in the
Channelmodel (#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.openendpoint on Slack WebAPI instead ofim.openendpoint to open direct message conversations, because the latter is deprecated (#401 by @cchadowitz-pf)
0.20.1 - 2020-07-23
Fixed
- Use
conversations.infoendpoint on Slack WebAPI instead ofchannels.infoendpoint, which is deprecated and mark optional fields as such inUserandChannelobjects (#386 by @repudi8or)
0.20.0 - 2020-07-22
Added
- Support Python 3.8
Changed
- Bump
dacitefrom 1.0.2 to 1.5.1 - Bump
redisfrom 3.3.11 to 3.5.3 - Bump
cythonfrom 0.29.14 to 0.29.21 - Bump
dillfrom 0.3.1.1 to 0.3.2 - Bump
requestsfrom 2.22.0 to 2.24.0 - Bump
slackclientfrom 2.5.0 to 2.7.3 - Add
is_threadproperty toMessageclass (#286 by @davidolrik) - Use
conversations.listendpoint on Slack WebAPI instead ofchannels.listendpoint, 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
deletedproperty is optional on user responses from Slack WebAPI
0.19.2 - 2020-01-05
Changed
- Breaking::
thread_tsproperty on theMessageclass has been renamed tots
Fixed
EchoPluginwill 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
slackclientfrom 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.usersandself.channelson 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 theslackclientlibrary anymore - Breaking: The
*_webapimethods 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
bottleimport
0.18.1 - 2019-11-17
Changed
- Bump
apschedulerfrom 3.5.3 to 3.6.3 - Bump
redisfrom 3.2.0 to 3.3.11 - Bump
happybasefrom 1.1.0 to 1.2.0 - Bump
cythonfrom 0.29.6 to 0.29.14 - Bump
dillfrom 0.2.9 to 0.3.1.1 - Bump
bottlefrom 0.12.16 to 0.12.17 - Include
bottleas a vendored dependency to not be dependent on the long release cycles ofbottle - Fix deprecation warnings to prepare for Python 3.8
- Allow matching multiline messages in
@listen_toand@respond_todecorators (#178 by @seerickcode)
Removed
- Breaking: drop support for Python 3.4 and 3.5
0.18.0 - 2019-03-10
Changed
- Bump
slackclientfrom 1.3.0 to 1.3.1 - Bump
dillfrom 0.2.8.2 to 0.2.9 - Bump
bottlefrom 0.12.13 to 0.12.16 - Bump
redisfrom 2.10.6 to 3.2.0 - Bump
Cythonfrom 0.28.5 to 0.29.6
0.17.0 - 2018-11-10
Added
- Add support for bot aliases (#108 by @seerickcode)
0.16.1 - 2018-09-28
Changed
- Allow not only direct subclasses of MachineBasePlugin be plugins, but also deeper decendants (#95 by @gfreezy)
- Bump
slackclientfrom 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
apschedulerfrom 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
0.13.2 - 2018-07-04
Changed
- Make HTTP server host & port configurable (#64 by @pirogoeth)
- Bump
dillfrom 0.2.7.1 to 0.2.8.2 - Bump
slackclientfrom 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
slackclientfrom 1.1.2 to 1.1.3
0.12.2 - 2018-02-26
Changed
- Bump
slackclientfrom 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
apschedulerfrom 3.4.0 to 3.5.1
0.9.0 - 2017-12-03
Changed
- Bump
apschedulerfrom 3.3.1 to 3.4.0 - Bump
slackclientfrom 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