nonebot2
跨平台 Python 异步聊天机器人框架,一套代码支持 QQ/Telegram/飞书/Discord 等十余平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
跨平台 Python 异步聊天机器人框架,一套代码支持 QQ/Telegram/飞书/Discord 等十余平台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:NoneBot 官方 Logo(来源:nonebot.dev)
想象一下:你在运营一个 QQ 群,想实现"新人入群自动欢迎"、"关键词自动回复"、"定时推送今日资讯",甚至"接一个 AI 大模型让机器人能聊天"。用原始 API 从头写,光是研究各个平台的鉴权、消息格式、长连接维护,就足以耗掉你一整个周末。
NoneBot2 就是来解决这个问题的——它把与具体聊天平台通信的脏活累活全部封装起来,开发者只需要写"收到特定消息 → 执行特定逻辑"这一层,用 Python 异步语法,简洁直观。
NoneBot 起源于 2019 年的 QQ 机器人生态,彼时 QQ 机器人主要依赖 CoolQ(酷Q)或 go-cqhttp 等第三方方案,协议复杂、文档零散。第一版 NoneBot(v1)针对这些痛点做了面向 Python 2 的封装,积累了大量中文社区用户。
2020 年 8 月,NoneBot2 正式发布,完全重写,基于 Python 3.10+ 的 asyncio 异步生态,引入了「适配器(Adapter)」和「驱动(Driver)」的插件化架构,支持 OneBot v11/v12、Telegram、飞书、Discord 等十余个平台。框架作者兼主要维护者 yanyongyu(网名)活跃在 GitHub 和 QQ 社区,持续推进版本迭代。
截至 2026 年,NoneBot2 GitHub 获星 7542,社区直接和间接用户超过 10 万,是国内开源聊天机器人领域最具影响力的框架之一。
NoneBot2 的编程模型极为简洁。以一个最简单的 Echo 插件为例:
import nonebot
from nonebot import on_message
from nonebot.adapters import Event
echo = on_message()
@echo.handle()
async def echo_handler(event: Event):
await echo.finish(event.get_plaintext())
上述代码实现了"收到任意消息 → 原样回复"的功能。对比直接调 API,这段代码没有出现任何平台鉴权、连接管理、超时重试的代码——这些全部由框架负责。
事件响应器(Matcher)系统 是 NoneBot2 的核心抽象。一个 Matcher 对应一种"消息处理规则",支持:
on_command:命令触发(如 /help)on_keyword:关键词触发on_regex:正则匹配on_startswith / on_endswith:前缀/后缀匹配on_shell_command:将消息交给 Shell 命令处理(适合接 AI 模型)on_notice:群事件(入群、退群、禁言等)on_request:入群请求审核每种响应器都支持权限控制(Permission)、规则过滤(Rule)和参数提取(Params),构成了一个灵活的事件处理管道。
NoneBot2 真正的护城河在于其适配器(Adapter)生态。
适配器是将 NoneBot2 与具体聊天平台连接起来的桥梁——每支持一个新平台,只需开发一个新的适配器包。现已官方支持的平台适配器包括:
| 平台 | 适配器 | 状态 |
|---|---|---|
| QQ(OneBot) | nonebot/adapter-onebot | 官方维护 |
| Telegram | nonebot/adapter-telegram | 官方维护 |
| 飞书 | nonebot/adapter-feishu | 官方维护 |
| GitHub | nonebot/adapter-github | 官方维护 |
| Discord | nonebot/adapter-discord | 官方维护 |
| QQ 官方接口 | nonebot/adapter-qq | 官方维护 |
| QQNT Red 协议 | nonebot/adapter-red | 官方维护 |
| Satori 统一协议 | nonebot/adapter-satori | 官方维护 |
此外还有社区贡献的微信公众平台、B站直播间、MC 服务器、Minecraft 等适配器,覆盖面极广。
驱动(Driver)层面,NoneBot2 支持 6 种 Web 驱动:FastAPI、Quart(异步 Flask)、websockets、httpx、aiohttp。开发者可自由选择或组合。
NoneBot2 的架构遵循清晰的分层设计:
用户插件层(Plugin)
↓
事件响应器层(Matcher / Rule / Permission)
↓
插件管理器(Plugin Manager)
↓
适配器层(Adapter)—— 平台协议
驱动层(Driver)—— HTTP Server / WebSocket
核心依赖栈:
代码质量方面,NoneBot2 实现了 100% 类型注解覆盖(通过 pyright 静态检查),pytest 覆盖率通过 CI 强制门禁,ruff 作为 Linter 保障代码风格统一。这在同类开源项目中相当罕见,体现了极高的工程素养。
NoneBot2 提供了官方 CLI 工具 nb-cli,通过 pip install nb-cli && nb 即可启动交互式初始化向导:
nb plugin create my_plugin # 创建插件
nb driver set fastapi # 切换驱动
nb adapter add onebot # 添加适配器
整个项目以 pyproject.toml 为核心,使用 uv 作为包管理器,Python 版本要求 ≥ 3.10。
Docusaurus 构建的官方文档站点(website/)提供了从入门到进阶的完整指引,社区 QQ 群(768887710)和 Discord 服务器活跃度高。
on_shell_command 模式是接入 GPT/Claude 的标准路径,社区有多个现成插件(如 nonebot-plugin-llm)。NoneBot2 的崛起,本质上是中国开源社区对"聊天机器人开发民主化"需求的回应。它证明了一个框架可以用优雅的 Python 异步语法,兼容十余个差异巨大的聊天平台;也证明了即便在商业平台压力下(QQ、微信的协议封锁),社区驱动的开源方案依然能保持旺盛的生命力。
对于想快速做聊天机器人原型的开发者,NoneBot2 几乎是中文社区的最优解。对于想构建企业级 Bot 服务的团队,其插件架构和类型安全也提供了足够的工程保障。