使用chatgpt-mirai-qq-bot在服务器部署go-cqhttp chatGPT机器人
准备工作
本文在涉及到路径时,一般都会使用绝对路径,方便大家确定位置
一个空闲的QQ小号
一个ChatGPT账号的Access Token或者API key
AccessToken获取方式:首先需要自己手动登录ChatGPT,然后打开下面的链接http://chat.openai.com/api/auth/session
倒数第二个字段对应的便是accessToken
同时也要注意一下expires字段,是accessToken的过期时间,过期后需要重新登录,获取,到服务器中更改,更改方式会在下面单独列出
三个项目
https://github.com/Mrs4s/go-cqhttp qq机器人
https://github.com/fuqiuluo/unidbg-fetch-qsign 登录签名
https://chatgpt-qq.lss233.com/ ChatGPT for Bot
unidbg-fetch-qsign需要系统安装jdk或者jre,版本1.8或以上(仅1.0.3及更高版本,老版本要求jdk11)。如果报错找不到类,请尝试1.8或略靠近1.8的版本,注意环境变量的配置
ChatGPT for Bot 使用Docker-compose部署,go-cqhttp也在里面,因此go-cqhttp不用自己再部署了
根据go-cqhttp文档配置信息的sing-server部分 中可以得知,unidbg-fetch-qsign需要选择1.1.0版本(如果go-cqhttp这部分文档更新了,请按最新的文档来)
在服务器找好位置,东西放一起
1 | cd /opt |
将其解压到qq_bot文件夹中
1 | unzip unidbg-fetch-qsign-1.1.0.zip -d /opt/qqbot/ |
配置使用 ChatGPT for Bot
打开ChatGPT for Bot 的release界面,选一个维护性更新的版本
https://github.com/lss233/chatgpt-mirai-qq-bot/releases
我们使用go-cqhttp版本的
复制一键部署命令,这里我放的是v2.5.3 - 维护性更新 的一键部署命令
1 | bash -c "$(wget -O- https://gist.githubusercontent.com/lss233/2fdd75be3f0724739368d0dcd9d1367d/raw/62a790da4a391af096074b3355c2c2b7ecab3c28/chatgpt-mirai-installer-gocqhttp.sh)" |
如果你的服务器有代理的话,记得开一下代理,不然容易因为网络原因导致出错
注意下,将linux的当前目录调整到准备工作中创建的qq_bot
文件中,然后执行上面的一键部署命令
按照提示一步一步进行,填写作为bot的qq账号与密码,管理员qq号,以及ChatGPT的accessToken,成功后会显示如下信息
1 | 程序已被安装在 ./chatgpt-qq 下, |
出错后二次执行,会提示你需要删除一个文件夹,删掉后再次执行
为chatGPT配置代理
在服务器上搭建代理的方式我就不讲了,网上很多,我这里随便拉一个Clash Linux服务器安装详细教程
1 | cd /opt/qq_bot/chatgpt-qq |
注意,chatGPT-qq在Docker下运行,而代理在宿主机上搭建,这里的代理地址需要填写公网ip与端口,记得在防火墙限制下来源ip
查看日志,观察执行情况
如果当前在/opt/qq_bot目录下,需要 cd ./chatgpt-qq
进入程序的安装目录,使用docker-compose logs -f --tail=100
观察日志
一般情况下会在日志中看到一个链接来让你手动打开去进行滑块认证,自己打开认证后继续观察日志,如果发现
1 | 登录需要滑条验证码, 请验证后重试. |
复制下地址,去粘贴到浏览器手动验证一下
一般到这一步仍然不行,会出现如下提示信息:
1 | 登录失败: 登录失败,请前往QQ官网im.qq.com下载最新版QQ后重试,或通过问题反馈与我们联系。 Code: 45 |
这个时候我们就需要使用unidbg-fetch-qsign了
配置使用unidbg-fetch-qsign
unidbg-fetch-qsign在使用前需要准备一些东西
libQSec.so与libfekit.so
协议对应版本QQ的libQSec.so
与libfekit.so
,go-cqhttp默认使用协议为Android Pad 8.9.63.11390
如果不去研究修改协议版本,请直接点击进入如下两个链接libfekit.so 、libQSec.so ,在右侧有一个小小的下载按钮,将其下载下来
需要修改的话,请参考unidbg-fetch-qsign-1.1.0
1 | cd /opt/qq_bot/unidbg-fetch-qsign-1.1.0 |
将两个so文件放入txlib/8.9.63
文件夹下
获取Android id
cat /opt/qq_bot/chatgpt-qq/gocqhttp/device.json
查看该文件中的android_id
1 | {...,"android_id":"xxxxxxxxxxxxxxxxxxx",...} |
随便找个地方记下,待会儿要用
创建启动脚本
紧接着我们在/opt/qq_bot/unidbg-fetch-qsign-1.1.0
目录下创建一个启动脚本,方便自己启动
1 | vim start.sh |
1 | --host=监听地址 |
执行
1 | ./start.sh |
日志在该目录下的logs.log文件中
为go-cqhttp配置签名服务器
1 | cd /opt/qq_bot/chatgpt-qq/gocqhttp |
在account下的sign-server下填写刚才配置的unidbg-fetch-qsign地址与端口
如果没有sign-server,可自行添加
1 | account: |
如果是从前面开始按照本教程过来的,那么sign-server请填写服务器 公网ip:端口
配置签名服务器后启动ChatGPT for Bot
配置签名服务器后,重启gocqhttp的docker容器
1 | cd /opt/qq_bot/chatgpt-qq |
如果出现以下消息,请将链接复制一下,发送到手机qq,在qq消息内点击链接打开验证(浏览器不行)
1 | 账号已开启设备锁,请选择验证方式: |
然后再次使用
1 | docker restart chatgpt-qq-gocqhttp-1 |
重启后继续按照日志提示进行滑条验证码验证,或者其他验证,直到出现登录成功为止
如果出现
1 | 获取T544 sign时出现错误........................ |
检查下unidbg-fetch-qsign的配置和go-cqhttp的签名服务器的端口是否对应,ip是否为公网ip
你可能需要
请在部署成功后阅读ChatGPT for Bot使用文档 来发现更多好玩的东西
参考内容
- 标题: 使用chatgpt-mirai-qq-bot在服务器部署go-cqhttp chatGPT机器人
- 作者: 日之朝矣
- 创建于 : 2023-10-08 14:56:50
- 更新于 : 2024-08-18 09:25:27
- 链接: https://blog.rzzy.fun/2023/10/08/chatgpt-mirai-qq-bot-deploy/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。