.. 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: 最新版本
.. image:: https://img.shields.io/badge/License-GPLv3-green.svg :target: https://pypi.python.org/pypi/errbot :alt: 许可证
.. 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: 在 https://gitter.im/errbotio/errbot 加入聊天
|
Errbot
Errbot 是一个聊天机器人。它允许你从聊天室里交互地启动脚本,用于任何目的:随机幽默、chatops、启动构建、监控提交、触发警报……
它是用 Python 编写的,并且很容易扩展。
Errbot 作为开源软件提供,并在 GPL v3 许可证下发布。
特性
聊天服务器支持
**内置支持**
- IRC 支持
- `Telegram 支持 <https://www.telegram.org/>`_
- `XMPP 支持 <http://xmpp.org>`_
**扩展支持**
- `Slack 支持 <https://slack.com/>`_ (参见 `说明 <https://github.com/errbotio/err-backend-slackv3>`__)
- `Discord 支持 <https://www.discordapp.com/>`_ (参见 `说明 <https://github.com/errbotio/err-backend-discord>`__)
- `Gitter 支持 <https://gitter.im/>`_ (参见 `说明 <https://github.com/errbotio/err-backend-gitter>`__)
- `Webex 支持 <https://www.webex.com/>`_ (参见 `说明 <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
- `Mattermost 支持 <https://about.mattermost.com/>`_ (参见 `说明 <https://github.com/Vaelor/errbot-mattermost-backend>`__)
- `RocketChat 支持 <https://rocket.chat/>`_ (参见 `说明 <https://github.com/cardoso/errbot-rocketchat>`__)
- `Skype 支持 <https://www.skype.com/>`_ (参见 `说明 <https://github.com/errbotio/errbot-backend-skype>`__)
- `TOX 支持 <https://tox.im/>`_ (参见 `说明 <https://github.com/errbotio/err-backend-tox>`__)
- `VK 支持 <https://vk.com/>`_ (参见 `说明 <https://github.com/Ax3Effect/errbot-vk>`__)
- `Zulip 支持 <https://zulipchat.com/>`_ (参见 `说明 <https://github.com/zulip/errbot-backend-zulip>`__)
管理功能
~~~~~~~~~~~~~~
在初步安装和安全设置后,可以通过 chatops(与机器人聊天)管理 Errbot。
- 安装/卸载/更新/启用/禁用托管在 git 上的私有或公共插件
- 插件可以从聊天进行配置
- 指示机器人加入/离开多用户聊天室(MUC)
- 安全性:ACL 控制功能(每个命令的管理员/用户权限)
- 备份:一个集成的命令 !backup 可以创建持久化数据的完全导出
- 日志:可以从聊天中检查或流式传输到 Sentry
开发者特性
~~~~~~~~~~~~~~~~~~
- 非常容易用 Python 扩展!(见下文)
- 为每个插件预设存储(例如 ``self['foo'] = 'bar'`` 持久化值)
- 追踪用户对话状态的对话流程
- 支持 Webhook 回调
- 支持 `markdown extras <https://markdown-extra.readthedocs.io/>`_ 格式,包括表格、嵌入图像、链接等
- 配置助手允许你通过聊天配置插件
- 文本开发/调试控制台
- 自我文档化:你的 docstrings 自动成为帮助信息
- 子命令和各种参数解析选项(如 re,命令行类型)
- 轮询支持:你可以设置插件定期执行某些操作
- 端到端测试后端
- 在 Slack 下的卡片渲染
社区和支持
---------------------
如果你有:
- 一个简单的问题,可以加入我们在 `Gitter 的 errbotio/errbot 聊天 <https://gitter.im/errbotio/errbot>`_。
- 一个插件开发问题,请使用 `Stackoverflow <http://stackoverflow.com/questions/tagged/errbot>`_ 标签 `errbot` 和 `python`。
- 一个需报告的 bug 或功能请求,请使用我们 `GitHub 项目页面 <https://github.com/errbotio/errbot/issues>`_。
你也可以在 Twitter 上用话题 ``#errbot`` 联系我们。
安装
------------
前提条件
~~~~~~~~~~~~~
Errbot 运行在 Linux、Windows 和 Mac 的 Python 3.6+ 上。对于某些聊天系统,你需要一个密钥或登录信息让你的机器人访问它。
快速开始
~~~~~~~~~~
我们推荐设置一个 `virtualenv <https://pypi.python.org/pypi/virtualenv>`_。
1. 从 pip 安装 `errbot`
2. 在某处创建一个目录(这里称为 `errbot`)来托管 Errbot 的数据文件
3. 初始化目录
4. 在文本模式下试用 Errbot
.. code:: bash
$ pip install errbot
$ mkdir errbot; cd errbot
$ errbot --init
$ errbot
它会向你显示一个提示 `>>>`,这样你可以直接与你的机器人交流!尝试输入 `!help` 开始。
添加聊天系统支持
对于内置系统,只需使用那些选项 telegram, IRC, XMPP
与 pip 一起使用,你仍然可以在初始安装后添加缺失的支持,例如::
$ pip install "errbot[irc]"
对于外部系统(Slack, Discord, Gitter, Skype 等),请按照它们各自的 github 页面上的说明进行操作。
配置
为了配置 Errbot 连接到这些聊天系统,你需要调整由 `errbot --init` 生成的 `config.py` 文件。
为了帮助你,我们这里有一个记录的模板:`config-template.py <https://raw.githubusercontent.com/errbotio/errbot/master/errbot/config-template.py>`_。
注意:即使你更改了配置中的 BACKEND,你仍然可以使用 `errbot -T` 在本地以文本模式测试你的实例。
以守护进程方式启动 Errbot
如果这些都有效,你现在可以使用 -d(或 --daemon)参数使它在分离模式下运行:
.. code:: bash
errbot --daemon
与机器人互动
启动 Errbot 后,你应该将机器人加入你的好友列表(如果你还没有)。你可能需要在某些聊天系统中显式邀请该机器人加入聊天室。 你现在可以直接向机器人发送命令了!
要获取所有可用命令的列表,你可以输入:
.. code:: bash
!help
如果你只希望了解特定命令的更多信息,可以输入:
.. code:: bash
!help command
管理插件
如果你的用户名在 `config.py` 文件中的 BOT_ADMINS 列表里,你可以在一对一聊天中管理机器人。
例如,要在公共插件仓库中键词搜索,你可以输入:
.. code:: bash
!repos search jira
要从列表中安装一个插件,请输入:
.. code:: bash
!repos install <repo 的名称>
例如 `!repos install errbotio/err-imagebot`.
编写插件
---------------
编写你自己的插件是非常简单的。`errbot --init` 会在 `plugins` 子目录中安装一个名为 `err-example` 的插件,你可以用它作为基础。
例如,这是创建一个 Errbot "Hello, world!" 插件所需的全部内容:
.. code:: python
from errbot import BotPlugin, botcmd
class Hello(BotPlugin):
"""Errbot 的“Hello, world!”示例插件"""
@botcmd
def hello(self, msg, args):
"""返回短语 "Hello, world!""""
return "Hello, world!"
这个插件会创建命令 "!hello",当你发出此命令时,它会返回 "Hello, world!"。
更多插件相关信息,请参见 `插件开发指南 <https://errbot.io/en/latest/user_guide/plugin_development/>`_.
对 Errbot 进行贡献
-----------------------------
请随意在 `github <https://www.github.com/errbotio/errbot>`_ 上 fork 并提出修改建议。