A Slack chatbot
- Clone the repo
- Create a bot user if you don't have one yet, and copy the API Token
- export SLACK_TOKEN="your-api-token"
make run
(ormake repl
for local testing)- Invite Limbo into any channels you want it in, or just message it in #general. Try typing
!gif dubstep cat
to test it out
I recommend that you always run limbo in a virtualenv so that you are running in a clean environment.
- --test, -t: Enter command line mode to enter a limbo repl.
- --hook: Specify the hook to test. (Defaults to "message").
- -c: Run a single command.
- --database, -d: Where to store the limbo sqlite3 database. Defaults to limbo.sqlite3.
- --pluginpath, -pp: The path where limbo should look to find its plugins (defaults to /plugins).
- SLACK_TOKEN: Slack API token. Required.
- LIMBO_LOGLEVEL: The logging level. Defaults to INFO.
- LIMBO_LOGFILE: File to log info to. Defaults to none.
- LIMBO_LOGFORMAT: Format for log messages. Defaults to
%(asctime)s:%(levelname)s:%(name)s:%(message)s
. - LIMBO_CLOUDWATCH: Turn on CloudWatch metrics. Must have format NameSpace&DimName-1=Value-1&...&DimName-n=Value-n, for zero or more dimension-value pairs. A metric named
EventCount
will be published into the given namespace with the given dimensions (and unitCount
). This metric gives the number of events Limbo received from Slack. - LIMBO_PLUGINS: Comma-delimited string of plugins to load. Defaults to loading all plugins in the plugins directory (which defaults to "limbo/plugins")
- LIMBO_NEEDMENTION: If defined, then the Limbo chatbot will only respond to commands addressed to it (via an @-mention). If undefined, then will respond to all command sent to channels it has been invited to.
Note that if you are getting an error message about not seeing environment variables, you may be running limbo as sudo
, which will clear the environment. Use a virtualenv and always run limbo as a user process!
It's super easy to add your own commands! Just create a python file in the plugins directory with an on_message
function that returns a string.
You can use the !help
command to print out all available commands and a brief help message about them. !help <plugin>
will return just the help for a particular plugin.
By default, plugins won't react to messages from other bots (just messages from humans). Define an on_bot_message
function to handle bot messages too. See the example plugins for an easy way to define these functions.
These are the current default plugins:
- How do I try out Limbo via docker?
- @PeterGrace maintains a public build of limbo, available from the docker registry. Executing
make docker_run
will start the default bot. make docker_stop
will stop the bot
- @PeterGrace maintains a public build of limbo, available from the docker registry. Executing
- When I start the docker container, I see an error about unable to source limbo.env. Is this a problem?
- No. The limbo.env file only exists when using Kubernetes with the included opaque secret recipe for storing your environment variables.
- I'd like to develop plugins for Limbo, but would still like to use Docker to run the bot. Is there a quick way to add plugins to the bot?
- Yes! Use the included Dockerfile.dev as a template, and simply build via
make docker_build
You'll then need to start the bot with your new_image_name, for exampledocker run -d -e SLACK_TOKEN=<your_token> new_image_name
- Yes! Use the included Dockerfile.dev as a template, and simply build via