Errbot 是一个用 Python 编写的、高度可扩展的开源聊天机器人框架,它的核心设计理念是“一次编写,随处部署”,允许你将同一个机器人部署到多种不同的聊天平台(如 Slack, Discord, Telegram, XMPP 等)上。

Errbot 是什么?
Errbot 是一个“聊天机器人引擎”,它为你提供了一个统一的接口和后台,让你可以专注于编写机器人的核心功能(逻辑和命令),而无需关心与各个聊天平台(如 Slack, Teams)的复杂 API 交互。
你可以把它想象成一个“翻译官”和“执行者”:
- 翻译官:它将你在 Slack 中输入的
/command指令,翻译成 Python 中的一个函数调用;执行完毕后,又将函数的返回结果翻译成 Slack 能看懂的消息发送回来。 - 执行者:它处理了所有底层的连接、认证、消息收发、错误处理等繁琐工作。
核心特性
-
多平台支持:
- 主流平台:Slack, Discord, Microsoft Teams, Telegram, Gitter, XMPP, HipChat 等。
- 通用协议:支持 IRC 和一个纯文本的回环模式,方便在本地开发和调试。
-
插件化架构:
(图片来源网络,侵删)- 这是 Errbot 最强大的特性,所有功能都通过插件实现。
- 插件就是普通的 Python 模块,编写非常简单。
- 有一个庞大的官方和社区插件库,可以直接使用,
errbotio/errbot-plugins:官方维护的插件集合。Google Drive,Jira,GitHub,Docker等集成插件。天气查询,计算器,URL 短链接等实用工具插件。
-
强大的 Python 支持:
- 机器人本身就是用 Python 写的,这意味着你可以利用 Python 丰富的生态系统(如
requests,pandas,numpy等)来构建复杂的功能。 - 内置一个 Python 解释器,你甚至可以在聊天窗口中直接执行 Python 代码(这需要谨慎配置权限)。
- 机器人本身就是用 Python 写的,这意味着你可以利用 Python 丰富的生态系统(如
-
Web UI 和 API:
- Errbot 自带一个 Web 管理界面,可以用来查看日志、管理插件、执行命令等。
- 提供一个 REST API,允许其他应用与你的机器人进行交互。
-
易于部署:
- 可以作为传统的 Python 应用运行。
- 也可以通过 Docker 容器化部署,这是目前最流行和推荐的方式。
- 支持
systemd等进程管理工具,可以轻松将其设置为后台服务。
如何开始?(快速上手指南)
我们将使用 Docker 部署,这是最简单快捷的方式。

安装 Docker
确保你的系统已经安装了 Docker 和 Docker Compose。
创建配置文件
在项目目录下创建一个 config.py 文件,这是机器人的核心配置文件。
# config.py
BOT_IDENTITY = {
'username': 'MyErrbot', # 机器人在聊天平台中的用户名
'token': 'xoxb-your-slack-bot-token-here' # 你的 Slack Bot Token
}
BOT_DATA_DIR = '/data' # 用于存储机器人数据的目录
# 指定要加载的插件
PLUGINS = [
'Hello', # 一个内置的示例插件
'Help', # 内置的帮助插件
'Weather', # 假设你安装了天气插件
]
# 指定插件目录,如果你想从本地加载插件
# PLUGINS_DIR = './plugins'
创建 docker-compose.yml 文件
这个文件将定义如何运行 Errbot 容器。
# docker-compose.yml
version: '3.7'
services:
errbot:
image: errbotio/errbot:latest
container_name: my-errbot
restart: unless-stopped
volumes:
- ./config.py:/app/config.py # 将配置文件挂载到容器内
- ./data:/data # 挂载数据卷,用于存储插件和机器人状态
environment:
- ERRBOT_CONFIG=/app/config.py # 告诉 Errbot 配置文件的位置
启动机器人
在终端中,进入你的项目目录,运行:
docker-compose up -d
你的 Errbot 就在后台运行了!你可以通过 docker-compose logs -f 查看启动日志。
添加到 Slack
- 在你的 Slack 工作区中,创建一个 "App for your workspace"。
- 在 "OAuth & Permissions" 中,为你的 App 添加
bot作用域,chat:write,channels:read。 - 复制生成的 Bot User OAuth Token。
- 将这个 Token 填入你之前创建的
config.py文件的BOT_IDENTITY['token']字段中。 - 保存
config.py文件,然后重启容器:docker-compose down docker-compose up -d
- 将你的 App 邀请到你想要的频道中,现在你就可以在 Slack 中使用
/hello等命令与机器人交互了!
编写一个简单的插件
创建一个自己的插件非常简单,假设你的 PLUGINS_DIR 设置为 ./plugins,那么就在项目根目录下创建 plugins/ 文件夹。
创建插件目录和文件
mkdir -p plugins/Greet touch plugins/Greet/__init__.py touch plugins/Greet/greet.py
编写插件代码 plugins/Greet/greet.py
from errbot import BotPlugin, re_botcmd
class Greet(BotPlugin):
"""一个简单的问候插件"""
@re_botcmd(pattern=r'^hi|hello|hey$', prefixed=False, flags=re.IGNORECASE)
def greet(self, msg, match):
"""当有人输入 hi, hello, hey 时自动回复"""
user = msg.frm.person
reply_text = f"Hello, {user}! 👋"
self.send(msg.frm, reply_text)
重启机器人
docker-compose restart
当你在 Slack 中输入 "hello" 时,Errbot 就会自动回复 "Hello, [你的名字]! 👋"。
优缺点分析
优点:
- 成熟稳定:Errbot 是一个老牌项目,经过多年发展,非常稳定可靠。
- 灵活性极高:基于 Python,几乎可以实现任何你能想到的功能。
- 强大的插件生态:有大量现成的插件可供使用,也可以轻松开发自己的。
- 一次开发,多平台部署:切换聊天平台通常只需要修改配置文件中的 Token。
缺点:
- 学习曲线:对于不熟悉 Python 和命令行的用户来说,上手有一定门槛。
- 配置相对复杂:相比于一些开箱即用的 SaaS 机器人,Errbot 的初始配置(如获取 Token、编写配置文件)需要更多手动操作。
- UI 简陋:Web UI 主要用于管理和调试,而不是构建一个漂亮的用户界面。
- 社区活跃度:虽然项目仍在维护,但相比一些新兴的框架,社区活跃度和更新频率可能稍低。
适用场景
Errbot 非常适合以下场景:
- DevOps 和自动化:将机器人作为团队自动化工具,用于部署、监控、查询 Jira 工单、管理 GitHub 等。
- 信息聚合与通知:从多个源(如 RSS、CI/CD 系统)获取信息,并推送到聊天频道。
- 构建团队内部工具:为团队创建一个统一的命令入口,查询内部文档、执行常用脚本等。
- 学习和实验:如果你想深入学习如何构建聊天机器人,Errbot 是一个绝佳的框架。
Errbot 是一个功能强大、高度灵活的聊天机器人框架,特别适合开发者和技术团队,它为你提供了构建强大自动化和交互式工具的坚实基础,虽然它不像一些无代码平台那样“简单”,但其带来的自由度和扩展性是无与伦比的,如果你愿意投入一点时间学习,它绝对会成为你团队中一个得力的助手。
标签: Errbot快速部署教程 Errbot聊天机器人使用指南 Errbot部署使用步骤