在之前的文章里,我介绍了通过mirai代替酷Q兼容其插件的方法,本文让我们通过一种更简单的方法实现对CQHTTP(OneBot)协议的支持。

准备

下载

首先让我们前往go-cqhttp 的releases页面下载最新的可执行文件。

DQswZV.png

依据自己的平台和架构选择,如果不知道请选择Windows amd64

生成配置文件

DQs2s1.png

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

DQsfZ6.png

配置

用现代代码编辑器(Subline Text 3 、VS、VS code)等打开 config.json

本章参考自 go-cqhttp 配置文档

账户

DQyQyR.png
  • 如果encrypt_passwordtrue 则在运行一次后自动加密,加密后存储在password_encrypted 里,原密码可删除。
  • 加密后在运行时仍会解密到内存,不能防止内存读取,不保证安全性。

HTTP API 配置

DQ6uAf.png

Websocket API 配置

DQ6v8g.png

反向 Websocket API 配置

DQciV0.png
  • 根据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:关闭心跳服务可能引起断线,请谨慎关闭