抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

假期用自己的服务器搭建了一个基于 Nonebot2 和 go-cqhttp 框架的QQ聊天机器人,使用的开源项目是绪山真寻bot(项目地址点击这里)。因为项目提供了一键安装包,这里就不详细说安装过程了,简单说下首次运行或者切换bot QQ号会碰到的go-cqhttp扫码登陆异常的问题。

注:写这篇博客的时候go-cqhttp版本为1.0.0,往后的版本已适配签名服务器,本方法已不再适用,详情请看[go-cqhttp登录异常(错误码45)的解决办法](https://www.shelven.com/2023/08/04/a.html)

问题描述:

首次运行或者切换bot QQ号后,go-cqhttp会要求需要登录验证,由于纯linux系统无法使用浏览器抓取滑条,因此会自动跳转到手机QQ扫码验证。

但是扫码会提示两个设备不在一个网络,无法登录。(很明显我的云端linux服务器不可能和手机能在一个网络中)

这个问题是腾讯QQ安全机制引起的,很明显是限制QQ机器人的手段,也就是你扫码的网络环境要和服务器的网络环境一致才可以登录。

解决方法:

第一步 下载和运行win版go-cqhttp

项目下载地址Releases · Mrs4s/go-cqhttp (github.com)

选择下载最新版本的go-cqhttp_windows_amd64,解压后有三个文件

双击exe文件,提示要在power shell中运行,确认,自动生成go-cqhttp.bat的批处理文件

双击运行go-cqhttp.bat,选择013,回车

修改生成的config.yml配置文件(主要就是改bot QQ号和密码)

修改之后再次运行go-cqhttp.bat,看到连接成功,网络没有问题即可

前面的反向代理失败统统不用管(因为我没有设置),我们只需要win版go-cqhttp提供设备登录信息文件(device.json)和密钥信息文件(session.token)即可。这两个文件特别重要,尤其是device.json,缺一个都将会导致登陆失败。

第二步 替换文件

替换linux服务器go-cqhttp文件夹下的device.json和session.token(有的话替换,无的话直接加进去)文件,config文件最好不要替换,你只要改一下qq号和密码就行,防止底下设置的反向连接端口出错(很重要!!)。

重新在linux上启动go-cqhttp,问题解决。

欢迎小伙伴们留言评论~