DonDebonair
slack-machine
Python

A simple, yet powerful and extendable Slack bot

Last updated Jun 4, 2026
770
Stars
56
Forks
25
Issues
0
Stars/day
Attention Score
62
Language breakdown
Python 100.0%
โ–ธ Files click to expand
README

Slack Machine

Join the chat at Slack image image image CI Status image

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):

bash
$ 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 localsettings.py file to your bot directory: touch localsettings.py
  • Create a new app in Slack:
  • 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:
title="local_settings.py"
    SLACKAPPTOKEN = "xapp-my-app-token"
    SLACKBOTTOKEN = "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

ยฉ 2026 GitRepoTrend ยท DonDebonair/slack-machine ยท Updated daily from GitHub