Slack Machine
Slack Machine is a simple, yet powerful and extendable Slack bot framework. More than just a bot, Slack Machine is a framework that helps you develop your Slack workspace into a ChatOps powerhouse. Slack Machine is built with an intuitive plugin system that lets you build bots quickly, but also allows for easy code organization. A plugin can look as simple as this:
from machine.plugins.base import MachineBasePlugin
from machine.plugins.message import Message
from machine.plugins.decorators import respond_to
class DeploymentPlugin(MachineBasePlugin):
"""Deployments"""
@respond_to(r"deploy (?P<application>\w+) to (?P<environment>\w+)")
async def deploy(self, msg: Message, application, environment):
"""deploy <application> <environment>: deploy application to target environment"""
await msg.say(f"Deploying {application} to {environment}")
Breaking Changes
Dropped support for Python 3.8 (v0.38.0)
As of v0.38.0, support for Python 3.8 has been dropped. Python 3.8 has reached end-of-life on 2024-10-07.
Features
- Get started with mininal configuration
- Built on top of the Slack Events API for smoothly responding to events in semi real-time. Uses Socket Mode so your bot doesn't need to be exposed to the internet!
- Support for rich interactions using the Slack Web API
- High-level API for maximum convenience when building plugins
- Low-level API for maximum flexibility
- Built on top of AsyncIO to ensure good performance by handling communication with Slack concurrently
Plugin API features:
- Listen and respond to any regular expression
- Respond to Slash Commands
- Capture parts of messages to use as variables in your functions
- Respond to messages in channels, groups and direct message conversations
- Respond with reactions
- Respond in threads
- Respond with ephemeral messages
- Send DMs to any user
- Support for blocks
- Support for message attachments [Legacy 🏚]
- Support for interactive elements
- Support for modals
- Listen and respond to any Slack event supported by the Events API
- Store and retrieve any kind of data in persistent storage (currently Redis, DynamoDB, SQLite and in-memory storage are supported)
- Schedule actions and messages
- Emit and listen for events
- Help texts for Plugins
Coming Soon
- Support for shortcuts
- ... and much more
Installation
You can add Slack Machine to your uv project by running:
uv add slack-machine
or add it to your Poetry project:
poetry add slack-machine
Lastly, you can install it using pip (not recommended):
$ pip install slack-machine
It is strongly recommended that you install slack-machine inside a
virtual environment!
Usage
-
Create a directory for your Slack Machine bot:
mkdir my-slack-bot && cd my-slack-bot -
Add a
local_settings.pyfile to your bot directory:touch local_settings.py -
Create a new app in Slack: https://api.slack.com/apps
-
Choose to create an app from an App manifest
-
Copy/paste the following manifest:
manifest.yaml -
Add the Slack App and Bot tokens to your
local_settings.pylike this:SLACK_APP_TOKEN = "xapp-my-app-token" SLACK_BOT_TOKEN = "xoxb-my-bot-token"
-
Start the bot with
slack-machine -
...
-
Profit!
Documentation
You can find the documentation for Slack Machine here: https://dondebonair.github.io/slack-machine/
Go read it to learn how to properly configure Slack Machine, write plugins, and more!
There is also an example plugin that shows off many of the features of Slack Machine: Slack Machine Kitchensink Plugin
Release files for slack-machine 0.40.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slack_machine-0.40.1.tar.gz | 331.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slack_machine-0.40.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 394.1 kB
Release files / slack_machine-0.40.1.tar.gz
| Download URL | slack_machine-0.40.1.tar.gz |
|---|---|
| Size | 331.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcf25c794787c0f697e70ac893e1560a79059106f0e04a16c8b49ffc3b4ccd54
|
|
BLAKE2b-256 checksum How to use checksums |
6a4f335f23d570212704764a38fba41e1ad208fb4ed8e1ee266dd320715dca09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.12
|
Release files / slack_machine-0.40.1-py3-none-any.whl
| Download URL | slack_machine-0.40.1-py3-none-any.whl |
|---|---|
| Size | 62.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d866b8cf9d9ddc8ddace75bf8bd1bde8788f8f2b2eeb86cc81cb02599cbb8cc
|
|
BLAKE2b-256 checksum How to use checksums |
569dc2cae33d8f58aa64eeb0c7e73de32f8dabad5f6da12014d668b72b7b92a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.12
|