每个男孩都应该搭一个属于自己的机器人!
以此文记之。
这里小给自己的插件打个广告(
推送钩子,使用 webhook 向用户推送消息,实现消息推送自由
设计选型
NoneBot1 / NoneBot2
NoneBot1 是早期的项目,一个专注于 QQ 机器人的框架,因此各种事件与 API 支持很完善,体验也很顺滑,上次更新还是在 21 年 9 月 已经进入稳定版本。
NoneBot2 则是更进一步,尝试成为一个现代的、跨平台的机器人框架。它有一些 NoneBot 所没有的高级特性,比如插件,比如依赖注入,etc. 不过由于为了做到跨平台,抽象了不少概念,会比 NoneBot1 略难上手一些。目前正在火热开发中。
开发者已声明 NoneBot1 依然会受到维护,所以在选择时不需有心理负担。
但是 NoneBot2 有拿来就能用的插件商店,它已经赢太多了
Nonebot1 与 Nonebot2 使用的是同一包名,因此两者不应共存
OneBot V11 / OneBot V12
现行的 OneBot 协议有两种,V11 与 V12。
V11 直接衍生自已经消失的酷 Q 机器人的协议:CQHTTP,与 QQ 高度绑定;V12 类似于 NoneBot2,也是尝试成为一个跨平台的机器人协议,目前尚在草案阶段。
目前而言,还是用 V11 罢。
go-cqhttp
基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现
go-cqhttp 是 OneBot 协议的非标准实现(牢记这一点!)。有的实现了、有的没实现、有的实现了但与标准有差异,与其说是实现倒不如说是部分兼容……不经意使用了一个非标准的 API,可能会痛苦调试整个下午。
在开发过程中,以下站点会很有用:
- Onebot V11 标准
- go-cqhttp 实现的 API 列表 用来查询哪个 API 是标准的,哪个不是
- go-cqhttp 的 API 细节
最终选择使用了 NoneBot2 + Onebot V11 + go-cqhttp 的组合。
需求定位
施工中