使用go-cqhttp代替酷q作为无头客户端
在之前的文章里,我介绍了通过mirai代替酷Q兼容其插件的方法,本文让我们通过一种更简单的方法实现对CQHTTP(OneBot)协议的支持。
准备
下载
首先让我们前往go-cqhttp 的releases页面下载最新的可执行文件。

依据自己的平台和架构选择,如果不知道请选择Windows amd64
生成配置文件

运行 go-cqhttp.exe
这个可执行文件。

配置
用现代代码编辑器(Subline Text 3 、VS、VS code)等打开 config.json
本章参考自 go-cqhttp 配置文档
账户

- 如果
encrypt_password
为true
则在运行一次后自动加密,加密后存储在password_encrypted
里,原密码可删除。 - 加密后在运行时仍会解密到内存,不能防止内存读取,不保证安全性。
HTTP API 配置

Websocket API 配置

反向 Websocket API 配置

- 根据JSON语法,在方括号内可配置多个反向WS配置。
一览表
取自官方文档
字段 | 类型 | 说明 |
---|---|---|
uin | int64 | 登录用QQ号 |
password | string | 登录用密码 |
encrypt_password | bool | 是否对密码进行加密. |
password_encrypted | string | 加密后的密码(请勿修改) |
enable_db | bool | 是否开启内置数据库, 关闭后将无法使用 回复/撤回 等上下文相关接口 |
access_token | string | 同CQHTTP的 access_token 用于身份验证 |
relogin | bool | 是否自动重新登录 |
relogin_delay | int | 重登录延时(秒) |
max_relogin_times | uint | 最大重登录次数,若0则不设置上限 |
_rate_limit | bool | 是否启用API调用限速 |
frequency | float64 | 1s内能调用API的次数 |
bucket_size | int | 令牌桶的大小,默认为1,修改此值可允许一定程度内连续调用api |
post_message_format | string | 上报信息类型 |
ignore_invalid_cqcode | bool | 是否忽略错误的CQ码 |
force_fragmented | bool | 是否强制分片发送群长消息 |
use_sso_address | bool | 是否使用服务器下发的地址 |
heartbeat_interval | int64 | 心跳间隔时间,单位秒。小于0则关闭心跳,等于0使用默认值(5秒) |
http_config | object | HTTP API配置 |
ws_config | object | Websocket API 配置 |
ws_reverse_servers | object[] | 反向 Websocket API 配置 |
log_level | string | 指定日志收集级别,将收集的日志单独存放到固定文件中,便于查看日志线索 当前支持 warn,error |
注: 开启密码加密后程序将在每次启动时要求输入解密密钥, 密钥错误会导致登录时提示密码错误. 解密后密码将储存在内存中,用于自动重连等功能. 所以此加密并不能防止内存读取. 解密密钥在使用完成后并不会留存在内存中, 所以可用相对简单的字符串作为密钥
注2: 分片发送为原酷Q发送长消息的老方案, 发送速度更优/兼容性更好,但在有发言频率限制的群里,可能无法发送。关闭后将优先使用新方案, 能发送更长的消息, 但发送速度更慢,在部分老客户端将无法解析.
注3:关闭心跳服务可能引起断线,请谨慎关闭