Go生态里的QQ机器人框架,目前最活跃的是"go-cqhttp"(原CQP)和基于它的封装。相比PHP框架,Go版本在并发、内存和部署上都有明显优势,适合长期运行的服务端机器人。

快速开始

环境要求

  • Go 1.21+
  • 一个QQ号(建议小号)
  • 一台有公网IP或内网穿透的服务器

核心流程

  1. 下载go-cqhttp二进制或编译源码
  2. 配置device.json和config.yaml
  3. 启动go-cqhttp,它会把QQ协议转换成HTTP/WebSocket事件
  4. 你的Go程序通过HTTP API发消息,通过WebSocket接收事件

推荐框架

go-cqhttp + 自写逻辑
最灵活的方式。直接用go-cqhttp做协议层,自己写消息处理逻辑。适合有Go基础的开发者。

MiraiGo
另一个流行的QQ协议实现,API设计更面向对象。如果你喜欢类似PHP框架的写法,MiraiGo的封装会更舒服。

QQBotGo / 类似封装
有些框架把go-cqhttp和消息处理封装在一起,提供插件系统。适合快速开发,不用自己处理WebSocket重连、心跳等细节。

开发要点

消息事件
框架会把消息转成统一的结构体,通常包含:

  • 消息类型(群消息/私聊/频道)
  • 发送者信息(QQ号、群名片、权限)
  • 消息内容(文本、图片、At)
  • 消息ID(用于回复或撤回)

回复消息
一般调用一个HTTP接口,传入消息ID和回复内容。图片需要先上传到临时图床,拿到URL后再发送。

插件化设计
建议把功能拆成独立插件:

  • 基础插件:自动回复、关键词触发
  • 管理插件:踢人、禁言、公告
  • 娱乐插件:签到、积分、小游戏
  • 工具插件:词云、天气、RSS订阅

部署建议

  • 用systemd或supervisord管理进程
  • 日志输出到文件,方便排查问题
  • 敏感词/广告过滤放在插件层,不要依赖框架本身
  • 高峰期注意go-cqhttp的连接数限制,可能需要开多个实例

相比PHP框架,Go版本的QQ机器人更稳定、更省资源,适合24小时在线。如果你已经会Go,直接上手go-cqhttp是最快路径。