Go-cqhttp 是基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现。是基于 QQ Android 协议支持的机器人框架库。
一个新注册的 QQ 账号仅需完成基础配置即可,但为了避免在机器人使用后期时遇到 Code45 等问题,建议配置使用签名服务器。
危险
根据 go-cqhttp/issue#2471,开发者已无力继续维护此项目。在未来 qsign 签名服务彻底被官方封死之后,Go-cqhttp 将无法继续使用,请窒息。
危险
由于 QQ 官方的持续检测,使用 Go-cqhttp 连接的成功率越来越低。即使成功连接,也可能面临频繁冻结等情况。不推荐任何用户再使用此方案连接 QQ 平台。
下载与安装
如果你想使用 Docker 部署 Go-cqhttp,请转到使用 Docker。
从 Go-cqhttp 的 GitHub Release 下载最新的版本。
系统类型
可执行文件
压缩文件
Intel 版 MacOS
N/A
go-cqhttp_darwin_amd64.tar.gz
M1 版 MacOS
N/A
go-cqhttp_darwin_arm64.tar.gz
32 位 Linux
N/A
go-cqhttp_linux_386.tar.gz
64 位 Linux
N/A
go-cqhttp_linux_amd64.tar.gz
arm64 Linux
N/A
go-cqhttp_linux_arm64.tar.gz
armv7 Linux
N/A
go-cqhttp_linux_armv7.tar.gz
32 位 Windows
go-cqhttp_windows_386.exe
go-cqhttp_windows_386.zip
64 位 Windows
go-cqhttp_windows_amd64.exe
go-cqhttp_windows_amd64.zip
arm64 Windows
go-cqhttp_windows_arm64.exe
go-cqhttp_windows_arm64.zip
armv7 Windows
go-cqhttp_windows_armv7.exe
go-cqhttp_windows_armv7.zip
解压下载好的文件到一个已经预先准备好的文件夹中。
运行 Go-cqhttp。此时将提示:
[WARNING]: 尝试加载配置文件 config.yaml 失败: 文件不存在。
[INFO]: 默认配置文件已生成,请编辑 config.yaml 后重启程序。
程序将会自动在存放 Go-cqhttp 文件夹的目录下生成一个默认配置文件 config.yaml。请填写好配置文件中的 QQ 账号和密码。
基础配置
请在配置文件 bot_aiocqhttp.toml 填写以下配置项:
qq_host = "127.0.0.1:8080" - 将会在填写的 IP 地址和端口中开启一个 Websocket 服务器,用于客户端反向连接。
填写完毕后,请在 bot_aiocqhttp.toml 配置文件中的 enable 选项设置为 true 以启用此平台端。
接下来,请在 Go-cqhttp 的配置文件中设置对应的连接方式。
...
# 连接服务列表
servers:
# 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
#- http: # http 通信
#- ws: # 正向 Websocket
#- ws-reverse: # 反向 Websocket
#- pprof: # 性能分析服务器
- ws-reverse:
universal: ws://127.0.0.1:8080/ws # 此处填写先前的 IP 地址和端口,注意不要删去后面的“/ws”
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
...
...
提示
若在配置中遇到问题,请参见 Go-cqhttp 官方文档。
签名服务
部署签名服务,即使用开源签名服务 qsign,是目前用来绕过检测的最有效手段。
危险
原 qsign 作者已因不可抗力无法再维护此项目,对应 GitHub 储存库也已删除,该方法会在未来逐渐失效,请做好预期准备。
你可以使用别人搭好的 qsign 服务,也可以自己在本地搭建一个:
警告
如果你的动手能力足够强或者有足够的电脑知识,强烈推荐自己搭建本地签名服务器。
使用他人的签名服务可能会泄漏以下信息:
登录账号
登录时间
登录后发送的消息内容
登录后发送消息的群号/好友 ID
不会泄露的信息:
账号密码
账号 session
群列表/好友列表
接收的消息
除发送消息外的任何历史记录
使用共享签名服务可能会提高账号被冻结的概率。
自行安装 JRE 17(Java Runtime Environment 17),请善用搜索引擎查找安装方法。
在 unidbg-fetch-qsign的 Release 界面中下载最新版本,并解压到一个提前准备好的文件夹中。
删除与 go-cqhttp 同级目录下的 data 文件夹和 device.json 文件。
在存放 unidbg-fetch-qsign 的文件夹中,运行以下命令:
bin/unidbg-fetch-qsign --basePath=txlib/<你要使用的版本>
请替换 <你要使用的版本> 字段为在存放 qsign 的文件夹 txlib 目录存在的版本。例:--basePath=txlib/8.9.73
提示
在选择版本时,应当遵从以下原则:升级版本应当一个一个版本升,以后冻结了可能就没机会回退版本了。发生 Code45 应当先尝试删除 go-cqhttp 的 device.json 文件和 data/cache 文件夹并重新登录,而不是第一时间升级版本。
接下来,请配置 Go-cqhttp 的配置文件中的签名服务器部分:
account: # 账号相关
# 数据包的签名服务器列表,第一个作为主签名服务器,后续作为备用
sign-servers:
- url: 'http://127.0.0.1:8080' # 主签名服务器地址,必填
key: '80804' # 签名服务器所需要的 apikey, 如果签名服务器的版本在1.1.0及以下则此项无效
authorization: '-' # authorization 内容, 依服务端设置,如 'Bearer xxxx'
...
...
...
运行 go-cqhttp 以生成设备文件。
下载对应版本的安卓手机协议并将其重命名为 1.json。将该文件储存在与 Go-cqhttp 同一目录下的 data/versions 文件夹中。
在与 go-cqhttp 同一目录下的 device.json 文件夹中,并修改以下字段:
{
"protocol": 1
}
重启 Go-cqhttp 来应用最终配置。
QQ 频道消息处理(Beta)
根据 Go-cqhttp 文档,iPad / Android Pad / Android Phone 协议支持处理 QQ 频道消息。
QQ 频道消息的处理仍然处于测试阶段,由于 Go-cqhttp 对频道消息支持的不完善,频道内消息无法撤回,且频道列表不会自动刷新(加入新频道需要手动重启一次 Go-cqhttp)。
在其生成的 device.json 中寻找 "protocol":6, 字段,将本处的数值修改为 1(Android Phone)、5(iPad)或 6(Android Pad)均可启用此功能。
提示
关于 Go-cqhttp 选用以上方式登录时出现的的 Code45 或其他登录问题,请根据 Go-cqhttp 官方 Issue 对照解决,或选用除以上协议外的其他协议。