Skip to content
Errbot is a chatbot, a daemon that connects to your favorite chat service and bring your tools and some fun into the conversation.
Branch: master
Clone or download
maxim-nazarenko and gbin #1334: limit upper bound for the slackclient (#1335)
* #1334: limit upper bound for the slackclient

* update tox.ini with bounded slackclient version
Latest commit e0c94f7 May 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update Oct 23, 2016
docs update wording Apr 26, 2019
errbot fix: backup command exporting plugin values (#1328) Apr 25, 2019
tests fix codestyle Feb 15, 2019
tools Updated balcklisted May 26, 2018
.codeclimate.yml added codeclimate config. May 9, 2016
.eslintignore added codeclimate config. May 9, 2016
.eslintrc added codeclimate config. May 9, 2016
.gitignore Added mypy cache to gitignore. May 25, 2018
.travis.yml Test with python 3.7 (#1224) May 23, 2018
CHANGES.rst Removed unecessary empty lines in CHANGES.rst Mar 24, 2019
COPYING Change license file to GNU standard name Dec 3, 2014 Fix setup + correctly use package_data Jun 8, 2016
README.rst fix: Remove waffle Apr 3, 2019 Tests: use conftest module to specify testbot fixture location Oct 26, 2016
gplv3-exceptions.txt Clearer rewording. Jun 6, 2016
pytest.ini Avoids a warning from py.test trying to load Test* Apr 14, 2017
requirements.txt Unify the requirements.txt in May 26, 2015
setup.cfg codestyle: Ignore E722 (bare Except) Feb 6, 2017 #1334: limit upper bound for the slackclient (#1335) May 14, 2019
tox.ini #1334: limit upper bound for the slackclient (#1335) May 14, 2019


Latest Version License Join the chat at


Errbot is a chatbot. It allows you to start scripts interactively from your chatrooms for any reason: random humour, chatops, starting a build, monitoring commits, triggering alerts...

It is written and easily extensible in Python.

Errbot is available as open-source software and released under the GPL v3 license.


Chat servers support


With add-ons


After the initial installation and security setup, Errbot can be administered by just chatting to the bot (chatops).

  • install/uninstall/update/enable/disable private or public plugins hosted on git
  • plugins can be configured from chat
  • direct the bot to join/leave Multi User Chatrooms (MUC)
  • Security: ACL control feature (admin/user rights per command)
  • backup: an integrated command !backup creates a full export of persisted data.
  • logs: can be inspected from chat or streamed to Sentry.

Developer features

  • Very easy to extend in Python! (see below)
  • Presetup storage for every plugin i.e. self['foo'] = 'bar' persists the value.
  • Conversation flows to track conversation states from users.
  • Webhook callbacks support
  • supports markdown extras formatting with tables, embedded images, links etc.
  • configuration helper to allow your plugin to be configured by chat
  • Graphical and text development/debug consoles
  • Self-documenting: your docstrings become help automatically
  • subcommands and various arg parsing options are available (re, command line type)
  • polling support: your can setup a plugin to periodically do something
  • end to end test backend
  • card rendering under Slack and Hipchat.

Community and support

If you have:

For more general discussion and announcements, you can join us on google plus community. You can also ping us on Twitter with the hashtag #errbot.



Errbot runs under Python 3.3+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it. Note: Python 2 support is still available in errbot-4.2.x, but it is going away.


We recommend to setup a virtualenv.

  1. Install errbot from pip
  2. Make a directory somewhere (here called errbot) to host Errbot's data files
  3. Initialize the directory
  4. Try out Errbot in text mode
$ pip install errbot
$ mkdir errbot; cd errbot
$ errbot --init
$ errbot

It will show you a prompt >>> so you can talk to your bot directly! Try !help to get started.

Adding support for a chat system

For the built-ins, just use one of those options slack, hipchat, telegram, IRC, XMPP with pip, you can still do it after the initial installation to add the missing support for example

$ pip install "errbot[slack]"

For the external ones (Skype, Gitter, Discord etc ...), please follow their respective github pages for instructions.


In order to configure Errbot to connect to one of those chat systems you'll need to tweak the file generated by errbot --init.

To help you, we have a documented template available here:

Note: even if you changed the BACKEND from the configuration, you can still use errbot -T and errbot -G to test out your instance locally (in text and graphic mode respectively).

Starting Errbot as a daemon

If all that worked, you can now use the -d (or --daemon) parameter to run it in a detached mode:

errbot --daemon

Interacting with the Bot

After starting Errbot, you should add the bot to your buddy list if you haven't already. You'll need to invite the bot explicitly to chatrooms on some chat systems too. You can now send commands directly to the bot!

To get a list of all available commands, you can issue:


If you just wish to know more about a specific command you can issue:

!help command

Managing plugins

You can administer the bot in a one-on-one chat if your handle is in the BOT_ADMINS list in

For example to keyword search in the public plugin repos you can issue:

!repos search jira

To install a plugin from this list, issue:

!repos install <name of repo>

For example !repos install errbotio/err-imagebot.

Writing plugins

Writing your own plugins is extremely simple. errbot --init will have installed in the plugins subdirectory a plugin called err-example you can use as a base.

As an example, this is all it takes to create a "Hello, world!" plugin for Errbot:

from errbot import BotPlugin, botcmd

class Hello(BotPlugin):
    """Example 'Hello, world!' plugin for Errbot"""

    def hello(self, msg, args):
        """Return the phrase "Hello, world!" to you"""
        return "Hello, world!"

This plugin will create the command "!hello" which, when issued, returns "Hello, world!" to you. For more info on everything you can do with plugins, see the plugin development guide.

Contribution to Errbot itself

Feel free to fork and propose changes on github

You can’t perform that action at this time.