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}")
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.
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!
Create a directory for your Slack Machine bot: mkdir my-slack-bot && cd my-slack-bot
Add a local_settings.py
file 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.py
like this:
SLACK_APP_TOKEN = "xapp-my-app-token"
SLACK_BOT_TOKEN = "xoxb-my-bot-token"
Start the bot with slack-machine
...
Profit!
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