项目介绍
什么是 Errbot
Errbot 是一个用于聊天系统的开源聊天机器人,可以在聊天室中交互式地启动脚本,无论是出于随机、娱乐、聊天操作或者其他目的,如构建项目、监控代码提交、触发警报等。它使用 Python 编写,非常容易扩展,并以 GPL v3 许可证发布。
特性
聊天服务器支持
Errbot 支持多种聊天服务器。内置支持包括:
- IRC
- Telegram
- XMPP
此外,通过安装附加组件还可以支持更多聊天平台,例如Slack、Discord、Gitter、Webex、Mattermost、RocketChat、Skype、TOX、VK和Zulip等。
管理功能
Errbot 的管理非常简便。在完成初始安装和安全设置之后,可以直接通过与机器人聊天来进行管理。包括安装、卸载、更新、启用或禁用托管在 Git 上的私人或公共插件,配置插件,加入和离开多用户聊天室(MUC)等。同时具备访问控制列表(ACL)管理、数据备份命令和日志检查功能。
开发者特性
Errbot 为开发者提供了丰富的扩展功能:
- 使用 Python 非常容易扩展
- 每个插件具有预设存储功能
- 支持对话流程跟踪
- 支持 webhook 回调
- 支持 Markdown 格式
- 文本开发和调试控制台
- 自动生成帮助文档
- 支持子命令和多种参数解析
- 支持定期任务设置
- 提供 end-to-end 测试后端
- 在 Slack 中支持卡片渲染
社区与支持
如果你有任何问题,可以加入 Gitter 上的 errbotio/errbot 聊天室。对于插件开发问题,建议使用 Stackoverflow 标签“errbot”和“python”进行提问。如果需要报告错误或者提出功能请求,请访问 Errbot 的 GitHub 项目页面。您也可以使用 #errbot 标签在 Twitter 上与我们交流。
安装指南
先决条件
Errbot 在 Linux、Windows 和 Mac 上运行,需 Python 3.6 及以上版本。对于某些聊天系统,您会需要密钥或登录凭据来让机器人访问。
快速入门
推荐使用 virtualenv 来创建一个 Python 环境:
-
通过 pip 安装 errbot。
-
创建一个目录(例如 errbot)来存放 Errbot 的数据文件。
-
初始化该目录。
-
使用文本模式试运行 Errbot。
$ pip install errbot $ mkdir errbot; cd errbot $ errbot --init $ errbot
在聊天客户端中,你可以和启动的机器人直接交互,输入 !help
来获取帮助。
添加聊天系统支持
对于内置支持系统,通过 pip 安装相应包。例如:
$ pip install "errbot[irc]"
对于其他外部支持系统(如 Slack、Discord 等),请参阅它们的 GitHub 页面获取安装说明。
配置
要使 Errbot 能够连接到所需的聊天系统,您需要修改 errbot --init
生成的 config.py
文件。我们提供了一个详细的配置模板供参考。
作为守护进程启动 Errbot
配置完成后,可以使用 -d
或 --daemon
参数以后台模式运行:
errbot --daemon
与机器人交互
启动 Errbot 后,将其添加到您的好友列表中,并根据需要邀请其加入聊天室。随后,您可以直接向机器人发送命令。要获取所有可用命令的列表,可以输入:
!help
查询某个特定命令的详细信息可以输入:
!help command
插件管理
在 config.py
文件中将自己的用户名添加到 BOT_ADMINS 列表后,可以在聊天中以管理员身份管理插件。例如:
!repos search jira
要安装一个插件,输入:
!repos install <name of repo>
例如:
!repos install errbotio/err-imagebot
编写插件
Errbot 的插件编写非常简单。在初始化目录的 plugins
子目录中,有一个名为 err-example
的示例插件可以作为范例。以下是一个“Hello, world!”插件的简单示例:
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!"
该插件创建了一个命令 !hello
,输入后将返回“Hello, world!”。
贡献
如果您希望为 Errbot 作贡献,可以在 GitHub 上分叉并提交修改建议。