go-cqhttp一款替代酷Q的机器人|支持linux和win系统

写在最前

由于酷Q已经阵亡,QQ机器人满天飞的时代似乎已经变的一去不复返,很多不缺钱的小伙伴可能纷纷转向了官方机器人,不过似乎官方机器人也太不给力了,无法自定义太多的行为,也没有自定义API。博主一度放弃了QQ机器人,而转向了TG,确实TG拥有更为良好的生态,不过却无法在大陆使用。后来陆续出现了很多,根据以前CQ转向的大佬开发,我也一直想写一篇文章,由于太忙,某些搭建起来可能也有点费事,所以一直没有动。这次看了这款机器人,我眼前一亮,确实很简单哈,写一篇文章抛砖引玉,后续将会介绍更多的功能如插件安装等等,本文只介绍搭建方法。

作者GH:https://github.com/Mrs4s/go-cqhttp

防跑路:https://github.com/swjsky/go-cqhttp

releases:https://github.com/Mrs4s/go-cqhttp/releases

《go-cqhttp一款替代酷Q的机器人|支持linux和win系统》

程序安装

CentOS7

#这里我用的是centos7-x64的系统,win系统不用讲了吧。
#版本为go-cqhttp-v0.9.39
#请提前自备好QQ

更新系统

#一般本步骤基本可以忽略
#安装wget
yum install wget
#更新一下
yum updata

开启端口

#注意这里端口号为默认的5700和9999,若有冲突,可以在后续配置文件中修改
firewall-cmd --zone=public --add-port=5700/tcp --permanent
firewall-cmd --zone=public --add-port=9999/tcp --permanent
firewall-cmd --reload

创建目录

#使用git安装的可以直接无视
mkdir /CQ-GO &&cd /CQ-GO

下载程序

#版本地址,请根据系统自行下载 https://github.com/Mrs4s/go-cqhttp/releases
#win64 https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.39/go-cqhttp-v0.9.39-windows-amd64.exe
#win32 https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.39/go-cqhttp-v0.9.39-windows-386.exe
#linux64 https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.39/go-cqhttp-v0.9.39-linux-amd64
#linux32 https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.39/go-cqhttp-v0.9.39-linux-386
#下载程序重新命名为go-cq
wget https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.39/go-cqhttp-v0.9.39-linux-amd64 &&mv go-cqhttp-v0.9.39-linux-amd64 go-cq

程序授权

chmod +x ./cq-go

运行程序

./cq-go

编辑配置

运行时,自动生成一个配置文件config.hjson,编辑配置文件,输入你的QQ号码和密码,其他的不懂的不要乱写。

《go-cqhttp一款替代酷Q的机器人|支持linux和win系统》

/*
    go-cqhttp 默认配置文件
*/

{
    // QQ号,必填
    uin: 
    // QQ密码,必填
    password: ""
    // 是否启用密码加密
    encrypt_password: false
    // 加密后的密码, 如未启用密码加密将为空, 请勿随意修改.
    password_encrypted: ""
    // 是否启用内置数据库
    // 启用将会增加10-20MB的内存占用和一定的磁盘空间
    // 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
    enable_db: true
    // 访问密钥, 强烈推荐在公网的服务器设置
    access_token: ""
    // 重连设置
    relogin: {
        // 是否启用自动重连
        // 如不启用掉线后将不会自动重连
        enabled: true
        // 重连延迟, 单位秒
        relogin_delay: 3
        // 最大重连次数, 0为无限制
        max_relogin_times: 0
    }
    // API限速设置
    // 该设置为全局生效
    // 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
    // 目前该限速设置为令牌桶算法, 请参考: 
    // https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
    _rate_limit: {
        // 是否启用限速
        enabled: false
        // 令牌回复频率, 单位秒
        frequency: 1
        // 令牌桶大小
        bucket_size: 1
    }
    // 是否忽略无效的CQ码
    // 如果为假将原样发送
    ignore_invalid_cqcode: false
    // 是否强制分片发送消息
    // 分片发送将会带来更快的速度
    // 但是兼容性会有些问题
    force_fragmented: false
    // 心跳频率, 单位秒
    // -1 为关闭心跳
    heartbeat_interval: 0
    // HTTP设置
    http_config: {
        // 是否启用正向HTTP服务器
        enabled: true
        // 服务端监听地址
        host: 0.0.0.0
        // 服务端监听端口
        port: 5700
        // 反向HTTP超时时间, 单位秒
        // 最小值为5,小于5将会忽略本项设置
        timeout: 0
        // 反向HTTP POST地址列表
        // 格式: 
        // {
        //    地址: secret
        // }
        post_urls: {}
    }
    // 正向WS设置
    ws_config: {
        // 是否启用正向WS服务器
        enabled: true
        // 正向WS服务器监听地址
        host: 0.0.0.0
        // 正向WS服务器监听端口
        port: 6700
    }
    // 反向WS设置
    ws_reverse_servers: [
        // 可以添加多个反向WS推送
        {
            // 是否启用该推送
            enabled: false
            // 反向WS Universal 地址
            // 注意 设置了此项地址后下面两项将会被忽略
            // 留空请使用 ""
            reverse_url: ws://you_websocket_universal.server
            // 反向WS API 地址
            reverse_api_url: ws://you_websocket_api.server
            // 反向WS Event 地址
            reverse_event_url: ws://you_websocket_event.server
            // 重连间隔 单位毫秒
            reverse_reconnect_interval: 3000
        }
    ]
    // 上报数据类型
    // 可选: string array
    post_message_format: string
    // 是否使用服务器下发的新地址进行重连
    // 注意, 此设置可能导致在海外服务器上连接情况更差
    use_sso_address: false
    // 是否启用 DEBUG
    debug: false
    // 日志等级
    log_level: ""
    // WebUi 设置
    web_ui: {
        // 是否启用 WebUi
        enabled: true
        // 监听地址
        host: 127.0.0.1
        // 监听端口,冲突了可以自己修改
        web_ui_port: 9999
        // 是否接收来自web的输入
        web_input: false
    }
}

配置QQ

填入授权文件后,重新运行程序

#我这里的提示仅供参考
[2021-02-01 22:12:01] [WARNING]: 尝试加载配置文件 config.hjson 失败: 文件不存在 
[2021-02-01 22:12:01] [INFO]: 默认配置文件已生成, 请编辑 config.hjson 后重启程序.

程序重启后的提示

[root@xxxx CQ-GO]# ./go-cq
[2021-02-01 22:17:27] [INFO]: 当前版本:v0.9.39 
[2021-02-01 22:17:27] [INFO]: 用户交流群: 721829413 
[2021-02-01 22:17:27] [WARNING]: 虚拟设备信息不存在, 将自动生成随机设备. 
[2021-02-01 22:17:27] [INFO]: 已生成设备信息并保存到 device.json 文件. 
[2021-02-01 22:17:27] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消. 
[2021-02-01 22:17:32] [INFO]: 开始尝试登录并同步消息... 
[2021-02-01 22:17:32] [INFO]: 使用协议: iPad 
[2021-02-01 22:17:34] [INFO]: Protocol -> connect to server: 203.205.255.221:8080 
[2021-02-01 22:17:34] [INFO]: Admin API 服务器已启动: 127.0.0.1:9999 
[2021-02-01 22:23:56] [WARNING]: 登录需要滑条验证码, 请选择解决方案:  
[2021-02-01 22:23:56] [WARNING]: 1. 自行抓包. (推荐) 
[2021-02-01 22:23:56] [WARNING]: 2. 使用Cef自动处理. 
[2021-02-01 22:23:56] [WARNING]: 3. 不提交滑块并继续.(可能会导致上网环境异常错误) 
[2021-02-01 22:23:56] [WARNING]: 详细信息请参考文档 -> https://github.com/Mrs4s/go-cqhttp/blob/master/docs/slider.md <- 
[2021-02-01 22:23:56] [WARNING]: 请输入(1 - 3):

这个时候建议选1,自动配置会简单一点,如果你是在本机搭建那么选3问题也不大,不过也可能需要验证

1
[2021-02-01 22:24:09] [WARNING]: 请用浏览器打开 -> https://ssl.captcha.qq.com/template/wireless_mqq_captcha.html?style=simple&aid=16&uin=xxxxxxxxx&sid=xxxxxxxxxxx&cap_cd=xxxxxxxxxxxxxxxxxxxx**&clientype=1&apptype=2 <- 并获取Ticket.

注意这个时候SSH提示一个网址,需要你打开浏览器去提交验证码,并获取Ticket。先不要打开,看看这里https://github.com/Mrs4s/go-cqhttp/blob/master/docs/slider.md

争取获取并输入了之后,可能还需要设备锁验证

[2021-02-01 22:24:09] [WARNING]: 请输入Ticket: (Enter 提交) 
t03V01C6Bqw3o-1nT01U32yUjaOkfXXc-JRe8vgd2vYLd6a4pmR5Ob_GCxxxxxxxxxxxxxxxOE9nKeQbYgPNfWniR2Qi8Om7pyacf-6yoiX
[2021-02-01 22:27:51] [WARNING]: 账号已开启设备锁,请选择验证方式: 
[2021-02-01 22:27:51] [WARNING]: 1. 向手机 xxxxxxxxx 发送短信验证码 
[2021-02-01 22:27:51] [WARNING]: 2. 使用手机QQ扫码验证. 
[2021-02-01 22:27:51] [WARNING]: 请输入(1 - 2):

这个时候你自己选择,个人建议选择扫码验证

2
[2021-02-01 22:28:01] [WARNING]: 请前往 -> https://ti.qq.com/safe/verify?_wv=2&_wwv=128&uin=1xxxxxxx&sig=kE1fWcxxxxxxxxxxxx6nV3Zo2oBMRmp83m%2Bkn%2F2UWAgto6ZdRwBpHQsEbbvX2Bw4iV1e%2BLbt2u9a%2B1p1SssrvCDh728Qn9SJ <- 验证并重启Bot. 
[2021-02-01 22:28:01] [INFO]: 按 Enter 继续....

我选择的2,把上面的网址输入到浏览器,之后用手机扫码验证了。基本验证完毕

再次重启

完成以上基本就可以了,再次运行程序即可,我的CM给你参考一下,楼主尝试了一下,机器人正常工作了。

[root@xiaolong CQ-GO]# ./go-cq
[2021-02-01 22:30:25] [INFO]: 当前版本:v0.9.39 
[2021-02-01 22:30:25] [INFO]: 用户交流群: 721829413 
[2021-02-01 22:30:25] [INFO]: 将使用 device.json 内的设备信息运行Bot. 
[2021-02-01 22:30:25] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消. 
[2021-02-01 22:30:30] [INFO]: 开始尝试登录并同步消息... 
[2021-02-01 22:30:30] [INFO]: 使用协议: iPad 
[2021-02-01 22:30:31] [INFO]: Protocol -> connect to server: 203.205.255.221:8080 
[2021-02-01 22:30:31] [INFO]: Admin API 服务器已启动: 127.0.0.1:9999 
[2021-02-01 22:30:33] [INFO]: 登录成功 欢迎使用: 采矿小七 
[2021-02-01 22:30:34] [INFO]: 开始加载好友列表... 
[2021-02-01 22:30:34] [INFO]: 共加载 4 个好友. 
[2021-02-01 22:30:34] [INFO]: 开始加载群列表... 
[2021-02-01 22:30:34] [INFO]: 共加载 0 个群. 
[2021-02-01 22:30:34] [INFO]: 信息数据库初始化完成. 
[2021-02-01 22:30:34] [INFO]: 正在加载事件过滤器. 
[2021-02-01 22:30:34] [WARNING]: 事件过滤器启动失败: open filter.json: no such file or directory 
[2021-02-01 22:30:34] [INFO]: 正在加载silk编码器... 
[2021-02-01 22:30:34] [INFO]: 资源初始化完成, 开始处理信息. 
[2021-02-01 22:30:34] [INFO]: アトリは、高性能ですから! 
[2021-02-01 22:30:34] [INFO]: CQ Websocket 服务器已启动: 0.0.0.0:6700 
[2021-02-01 22:30:34] [INFO]: 正在检查更新. 
[2021-02-01 22:30:34] [INFO]: CQ HTTP 服务器已启动: 0.0.0.0:5700 
[2021-02-01 22:30:35] [INFO]: 检查更新完成. 当前已运行最新版本. 
[2021-02-01 22:31:08] [INFO]: 收到好友 山涧小石(666666) 的消息: .... (1934610795) 
[2021-02-01 22:31:23] [INFO]: 收到好友 山涧小石(666666) 的消息: 验证成功了哈 (1171455752) 
[2021-02-01 22:31:38] [INFO]: Bot 账号在客户端 iPhone (iPhone) 登出. 
[2021-02-01 22:31:59] [INFO]: 收到好友 山涧小石(666666) 的消息: 你是不是管理员啊 (852873118) 
[2021-02-01 22:35:32] [INFO]: 收到好友 山涧小石(666666) 的消息: 你真的是不是管理员啊 (-1411604956) 
[2021-02-01 22:35:57] [INFO]: 收到好友 山涧小石(666666) 的消息: 天下无鱼,shikey.com。测试成功否 (-589582670) 
[2021-02-01 22:38:24] [INFO]: Bot进入了群 无鱼博客VIP群(26847206). 
[2021-02-01 22:39:06] [INFO]: 收到群 无鱼博客VIP群(666666) 内 山涧小石(666666) 的消息: [CQ:at,qq=666666] 文件说明 (-1359505521)

《go-cqhttp一款替代酷Q的机器人|支持linux和win系统》

程序守护

#名字随意取了,我这里用go-cq
cat > /etc/systemd/system/go-cq.service <<EOF
[Unit]
Description=go-cq
After=network.target

[Service]
Type=simple
ExecStart=/CQ-GO/go-cq
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

开机启动、重启、结束

#启动并设置开机自启
systemctl start go-cq
systemctl enable go-cq
#重启程序
systemctl restart go-cq
#结束进程
systemctl stop go-cq

写在最后

非常感谢这些大佬的无私分享,程序运行非常不错。

1、占用内存极少。基本上256内存都跑起来。

2、安装简单,使用GO语言,平台移植性能高。

发表回复