手动搭建chatgpt-mirai-qqbot对接AI和聊天软件
本文最后更新于:2025年4月24日 下午
说明
前面用docker-compose一键搭建过,为了方便调试各种错误,这次手动一步步搭建,也顺便学习一些新东西。
准备工作
- 两个qq账号 
- 一个微信账号 
- 一个tg账号:新建bot获取token,获取chatid 
- 一个chatgpt账号获取access token 
- 一个bing账号获取cookie 
- 一个Google bard账户获取cookie 
- 国内和国外vps各一台(国外vps负责接入AI,国内vps负责挂qq和微信) 
- 国外vps安装Python3.11及以上版本(chatgpt-mirai-qqbot需要的要求) - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19- # 以下是Debian10或11安装Python3.11的命令
 sudo apt update && sudo apt upgrade
 sudo apt install wget build-essential libncursesw5-dev libssl-dev \
 libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
 
 wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz
 tar xzf Python-3.11.3.tgz
 cd Python-3.11.3
 ./configure --enable-optimizations
 make altinstall
 python3.11 -V
 # 如果系统有多个版本的python,注意看默认使用的版本是不是3.11
项目地址
- lss233/chatgpt-mirai-qq-bot: 🚀 一键部署!真正的 AI 聊天机器人!支持ChatGPT、文心一言、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送 | 支持 QQ、Telegram、Discord、微信 等平台 (github.com)
- Mrs4s/go-cqhttp: cqhttp的golang实现,轻量、原生跨平台. (github.com)
- lcjqyml/wechatbot: A chatbot for wechat. (github.com)
搭建项目本体
在国外vps上:
| 1 |  | 
接入各种AI
调整配置文件config.cfg,没有就自己创建,如果不需要接入那么多的ai和聊天软件就注释或删除
| 1 |  | 
接入聊天软件
在国内vps上
安装go-cqhttp接入qq(最困难的一步,先看再动)
- 下载最新版适合自己vps的软件包 
- 解压包 - tar -xzvf [文件名]
- cd 进入解压目录 
- 输入 - ./go-cqhttp回车运行,选择3反向WebSocket,生成配置文件
- 按下述样例修改配置:最简配置可只关注account和servers两项 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109- # go-cqhttp 默认配置文件
 account: # 账号相关
 uin: # QQ账号
 password: '' # 密码为空时使用扫码登录,如果device.json里面的protocol选择的是2也就是watch在线,就留空扫码登录,需要手机端qq和vps在同一ip才能扫码
 encrypt: false # 是否开启密码加密
 status: 17 # 在线状态(任意都行) 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
 relogin: # 重连设置
 delay: 3 # 首次重连延迟, 单位秒
 interval: 3 # 重连间隔
 max-times: 0 # 最大重连次数, 0为无限制
 # 是否使用服务器下发的新地址进行重连
 # 注意, 此设置可能导致在海外服务器上连接情况更差
 use-sso-address: true
 # 是否允许发送临时会话消息
 allow-temp-session: false
 heartbeat:
 # 心跳频率, 单位秒
 # -1 为关闭心跳
 interval: 5
 message:
 # 上报数据类型
 # 可选: string,array
 post-format: string
 # 是否忽略无效的CQ码, 如果为假将原样发送
 ignore-invalid-cqcode: false
 # 是否强制分片发送消息
 # 分片发送将会带来更快的速度
 # 但是兼容性会有些问题
 force-fragment: false
 # 是否将url分片发送
 fix-url: false
 # 下载图片等请求网络代理
 proxy-rewrite: ''
 # 是否上报自身消息
 report-self-message: false
 # 移除服务端的Reply附带的At
 remove-reply-at: false
 # 为Reply附加更多信息
 extra-reply-data: false
 # 跳过 Mime 扫描, 忽略错误数据
 skip-mime-scan: false
 # 是否自动转换 WebP 图片
 convert-webp-image: false
 output:
 # 日志等级 trace,debug,info,warn,error
 log-level: warn
 # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.
 log-aging: 15
 # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写
 log-force-new: true
 # 是否启用日志颜色
 log-colorful: true
 # 是否启用 DEBUG
 debug: false # 开启调试模式
 # 默认中间件锚点
 default-middlewares: &default
 # 访问密钥, 强烈推荐在公网的服务器设置
 access-token: ''
 # 事件过滤器文件目录
 filter: ''
 # 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: 1 # 令牌桶大小
 database: # 数据库相关设置
 leveldb:
 # 是否启用内置leveldb数据库
 # 启用将会增加10-20MB的内存占用和一定的磁盘空间
 # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
 enable: true
 sqlite3:
 # 是否启用内置sqlite3数据库
 # 启用将会增加一定的内存占用和一定的磁盘空间
 # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
 enable: false
 cachettl: 3600000000000 # 1h
 # 连接服务列表
 servers:
 # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
 #- http: # http 通信
 #- ws: # 正向 Websocket
 #- ws-reverse: # 反向 Websocket
 #- pprof: #性能分析服务器
 # 反向WS设置
 - ws-reverse:
 # 反向WS Universal 地址
 # 注意 设置了此项地址后下面两项将会被忽略
 universal: ws://国外vps的ip:8554/ws
 # # 反向WS API 地址
 # api: ws://your_websocket_api.server
 # # 反向WS Event 地址
 # event: ws://your_websocket_event.server
 # # 重连间隔 单位毫秒
 # reconnect-interval: 3000
 # middlewares:
 # <<: *default # 引用默认中间件
- 再次运行 - ./go-cqhttp生成随机设备信息device.json
- 根据需要修改device.json中的protocol为2 
- 再次运行 - ./go-cqhttp,如果你没有配置qq密码就会让你扫码登录,这就要求你的手机qq登录时用的是国外vps的地址,两者必须在同一ip下才能扫码登录成功。解决这个问题,可以是在本地电脑端下载对应版本的go-cqhttp,按照上述配置成功扫码登录以后,将本地的config.yml和device.json以及session.token上传到vps,然后vps就可以直接登录qq了,目前来看这样操作比较稳当。
- 项目的配置说明,如果遇到问题多看项目issue或提问 
- 登录成功以后,有概率碰到qq号被冻结的情况,申诉可解封 
接入微信
| 1 |  | 
端口是安装chatgpt-mirai-qqbot时设置的 config.cfg
里面的http项的端口
启动后扫码登陆即可:
- 扫码的微信号需要进过实名认证,否则会异常。
- 尽量避免国外登陆或者异地登陆,防止封号。
- 若二维码不清晰,可将二维码上方的链接copy至浏览器打开扫码,或者将二维码复制粘贴到记事本,或者更换终端连接器都可能解决(本人开始使用的是finalshell二维码整个变形了)
启动主程序
国外vps
| 1 |  | 
注意看报错信息,再去检查各项设置,如果顺利享受各种聊天软件与各种AI的对话吧。
常用聊天指令
| 1 |  | 
后记
- 使用 - screen命令让- python3 bot.py和- ./go-cqhttp在关闭终端的情况下继续运行:(这玩意就是session的套娃)- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20- # 安装命令
 apt install screen
 # 新建screen窗口名称为bot,并自动进入
 screen -S bot
 # 运行bot
 python3 bot.py
 # 退出bot窗口,程序就在窗口中运行了
 Ctrl + A , D
 # 显示目前所有的窗口
 screen -ls
 # 恢复某个窗口,检查程序运行情况
 screen -r 窗口名称
 # 开另一个窗口运行go-cqhttp
 screen -S qq
- 检查 - go-cqhttp的运行状态,如果失败退出就自动再运行- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- #!/bin/bash
 while true
 do
 # 检查 go-cqhttp 进程是否正在运行
 if ps aux | grep -v grep | grep -q "go-cqhttp"; then
 echo "go-cqhttp 进程正在运行,继续监视"
 else
 echo "go-cqhttp 进程未运行,启动进程"
 # 运行 go-cqhttp 命令,根据实际情况调整命令路径和参数
 /root/go-cqhttp/go-cqhttp
 sleep 300
 fi
 done- 将上述内容保存为 - autorun.sh,并且- chmod +x autorun.sh,存放在go-cqhttp文件夹下,用- bash autorun.sh代替- ./go-cqhttp运行,注意如果qq登录失败又反复运行的话,是不是大概率会冻结账号,还在观察中。