1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
.. image:: https://errbot.readthedocs.org/en/latest/_static/errbot.png
:target: http://errbot.io
|
.. image:: https://github.com/errbotio/errbot/workflows/Python%20package/badge.svg
:target: https://github.com/errbotio/errbot/actions
.. image:: https://img.shields.io/pypi/v/errbot.svg
:target: https://pypi.python.org/pypi/errbot
:alt: Latest Version
.. image:: https://img.shields.io/badge/License-GPLv3-green.svg
:target: https://pypi.python.org/pypi/errbot
:alt: License
.. image:: https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg
:target: https://gitter.im/errbotio/errbot?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
:alt: Join the chat at https://gitter.im/errbotio/errbot
|
Errbot
======
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.
Features
--------
Chat servers support
~~~~~~~~~~~~~~~~~~~~
**Built-in**
- IRC support
- `Telegram support <https://www.telegram.org/>`_
- `XMPP support <http://xmpp.org>`_
**With add-ons**
- `Slack support <https://slack.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-slackv3>`__)
- `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-discord>`__)
- `Gitter support <https://gitter.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-gitter>`__)
- `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
- `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
- `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
- `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
- `TOX <https://tox.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-tox>`__)
- `VK <https://vk.com/>`_ (See `instructions <https://github.com/Ax3Effect/errbot-vk>`__)
- `Zulip <https://zulipchat.com/>`_ (See `instructions <https://github.com/zulip/errbot-backend-zulip>`__)
Administration
~~~~~~~~~~~~~~
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 <https://markdown-extra.readthedocs.io/>`_ formatting with tables, embedded images, links etc.
- configuration helper to allow your plugin to be configured by chat
- 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
Community and support
---------------------
If you have:
- a quick question feel free to join us on chat at `errbotio/errbot on Gitter <https://gitter.im/errbotio/errbot>`_.
- a plugin development question please use `Stackoverflow <http://stackoverflow.com/questions/tagged/errbot>`_ with the tags `errbot` and `python`.
- a bug to report or a feature request, please use our `GitHub project page <https://github.com/errbotio/errbot/issues>`_.
You can also ping us on Twitter with the hashtag ``#errbot``.
Installation
------------
Prerequisites
~~~~~~~~~~~~~
Errbot runs under Python 3.6+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it.
Quickstart
~~~~~~~~~~
We recommend to setup a `virtualenv <https://pypi.python.org/pypi/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
.. code:: bash
$ 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 `telegram, IRC, XMPP` with pip, you can still do it
after the initial installation to add the missing support for example ::
$ pip install "errbot[irc]"
For the external ones (Slack, Discord, Gitter, Skype, etc ...), please follow their respective github pages for instructions.
Configuration
~~~~~~~~~~~~~
In order to configure Errbot to connect to one of those chat systems you'll need to tweak the `config.py` file generated
by `errbot --init`.
To help you, we have a documented template available here: `config-template.py <https://raw.githubusercontent.com/errbotio/errbot/master/errbot/config-template.py>`_.
Note: even if you changed the BACKEND from the configuration, you can still use `errbot -T` to test
out your instance locally in text mode.
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:
.. code:: bash
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:
.. code:: bash
!help
If you just wish to know more about a specific command you can issue:
.. code:: bash
!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 `config.py`.
For example to keyword search in the public plugin repos you can issue:
.. code:: bash
!repos search jira
To install a plugin from this list, issue:
.. code:: bash
!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:
.. code:: python
from errbot import BotPlugin, botcmd
class Hello(BotPlugin):
"""Example 'Hello, world!' plugin for Errbot"""
@botcmd
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 <https://errbot.io/en/latest/user_guide/plugin_development/>`_.
Contribution to Errbot itself
-----------------------------
Feel free to fork and propose changes on `github <https://www.github.com/errbotio/errbot>`_
|