面向多账号场景的异步 QQ 机器人框架,统一支持内置 QQ、QQ 注入、OneBot v11 和 Lagrange。
项目仅供学习交流,请遵守所在地法律、QQ 平台规则及相关服务条款。
- 四种接入统一进入同一事件管线,插件不再感知渠道差异。
- 支持群聊、私聊、自身消息、通知、请求和元事件。
- 支持多账号路由、插件热重载、Web 管理和日志持久化。
- 对消息字段、消息段、动作响应、顺序和幂等进行统一规范化。
环境要求:Python 3.11+、Git,以及当前系统可运行的 QQ 环境。
git clone https://github.com/ElainaCore/Elaina_QQBot.git ElainaQQ
cd ElainaQQ
python -m pip install -r requirements.txt
python main.py启动后访问 http://localhost:5201/web/,首次管理密码会写入 config/settings.yaml。
配置文件由 config/*.example.yaml 自动生成,字段说明只保留在对应 YAML 中。
内置 QQ ─┐
QQ 注入 ─┼─> 渠道适配 ─> EventPipeline ─> EventDispatcher ─> 插件
OneBot ─┤
Lagrange─┘
所有入口先锁定 OneBot 固定字段,再执行短期幂等和会话有序分发;渠道差异只存在于入口转换与动作执行器。
core/foundation 配置、日志和安全基础设施
core/protocols OneBot 事件、消息、动作和连接契约
core/runtime 应用生命周期与 QQ 运行时
core/plugins 插件加载、分发和公开接口
core/services 文件、日志和监视服务
core/transport HTTP 与 WebSocket 传输
web Web 面板后端与构建产物
plugins 插件
modules 模块
tests 回归测试
docs 开发参考
创建 plugins/hello/main.py:
from core.plugins import handler
@handler(r'^你好$', name='打招呼')
async def say_hello(event, match):
await event.reply('你好!')插件只应从 core.plugins 导入公开能力,保存 Python 文件后会自动热重载。
Web 前端源码位于 Elaina_QQBot_web,插件市场索引位于 Elaina-plugins。
- 公网部署必须配置强密码、OneBot Token/Secret、TLS 和访问控制。
- 不要提交账号目录、Token、Cookie、二维码、日志或插件私有数据。
- 插件和模块属于可执行代码,只安装可信来源。
请通过 Issues 提交问题,并附带系统、Python 版本、接入渠道、日志和复现步骤。
本项目采用 MIT License。
