Appearance
介绍
icqq-rust-onebot 是一个非官方QQ的机器人后端——你运行它,它帮你的程序连上 QQ,收发消息。
它对外提供 OneBot 11 接口,你的代码通过 HTTP 或 WebSocket 跟它通信。不管你用 Python、Node.js、Go 还是任何语言,只要能发 HTTP 请求或连 WebSocket,就能对接。
免责声明
- 本项目仅供学习交流与技术研究使用,不得用于任何违反法律法规的用途。
- 本项目永远不会提供任何金融相关功能(支付、红包、转账等),永远不会实现任何可被用于骚扰、欺诈、批量营销等滥用场景的接口。
- 使用者应当遵守所在地区的法律法规,因使用本项目产生的一切后果由使用者自行承担,与开发者无关。
- 如本项目侵犯了您的合法权益,请通过 GitHub Issue 联系我们,我们将及时处理。
它能做什么
- 收发私聊 / 群聊消息(文字、图片、语音、视频、表情、合并转发……)
- 群管理(踢人、禁言、设管理、改头衔、群公告……)
- 处理好友 / 入群请求
- 接收各类通知事件(撤回、戳一戳、群成员变动……)
- 完整的 API 列表见 API 参考
你需要准备什么
- 一个 QQ 账号(QQ 号 + 密码,或者扫码登录)
- 一个 sign server(签名服务器)—— 现代 QQ 协议要求每个请求包都带签名,需要外部签名服务。本项目不内置签名服务,需自行部署或获取
准备好后,跟着快速开始走就行。
兼容性说明
与其他 OneBot 实现的差异
以下几点与 go-cqhttp 等常见实现不同,对接时请注意:
- 不支持 CQ 码 —— 消息只接受数组格式(
[{"type":"text","data":{"text":"hello"}}])。如果你传字符串,会被当作纯文本,不会解析[CQ:...] message_id是字符串 —— 不是标准 OneBot 11 要求的 int32 整数,而是一个 base64url 编码的自描述字符串。直接拿来传给撤回/回复 API 就行,不要尝试转数字raw_message是纯文本 —— 只是把消息里的文本段拼在一起,不含 CQ 码
技术特点
- 纯 Rust 实现,不依赖 Node.js/Python 运行时,内存占用极低(< 15 MB RSS)
- 单二进制文件部署,内置 SQLite 存储
- 协议层移植自 TypeScript 版 icqq,行为保持一致
- 支持 HTTP、正向 WebSocket、反向 WebSocket 三种通信方式
