运行一个QQ机器人吧,基于go-cqhttp
目前我在用的程序
- go-cqhttp是cqhttp的golang实现,轻量、原生跨平台:https://github.com/Mrs4s/go-cqhttp
- Nonebot2是一个可扩展的 Python 异步机器人框架:https://github.com/nonebot/nonebot2
- QQBot(已停止免费维护)是一个带控制台的青龙多面板管理程序,机器人部分依赖
go-cqhttp
:https://github.com/asupc/qqbot
1 系统环境
Nonebot2 的 Python 环境:3.7 以上
之前年少无知的我选择在服务器上安装了
CentOS 7
,系统的Python版本只有2.7.5…
升级Python版本、改系统环境…太多痛了,最后把系统搞崩了,不过还好我有前几天的快照
别管你是不是要部署Nonebot2,还是别用CentOS了,而且不久它也要停更了
我的系统环境:Ubuntu 20.04 LTS (Py3.7.9)
2 安装go-cqhttp
以下配置均是 Linux 版本的说明,Windows 下配置类似。
如果遇到任何困难,查官方文档一定是个好办法
安装 go-cqhttp
go-cqhttp 文档: https://docs.go-cqhttp.org/guide/
go-cqhttp 下载地址:https://github.com/Mrs4s/go-cqhttp/releases
选择你合适的版本,并将 go-cqhttp 上传到你的服务器上(使用 SSH 工具或 BT 面板都可以)

我这里将 go-cqhttp 上传到 /root/cqhttp
进入到 go-cqhttp 目录下面
cd /root/cqhttp
给权限,该行命令执行成功不会输出任何信息
chmod 777 go-cqhttp
运行 go-cqhttp, 如果没有执行上面一条命令则提示./go-cqhttp: 权限不够
./go-cqhttp
Nonebot2 需要使用反向 Websocket,这里我们直接输入 3
然后回车
如果你还想同时配置 QQbot 框架,可以输入 123
可以生成三种协议来使用

然后我们就能看到 cqhttp 目录下面多出来一个 config.yml
文件
修改 config.yml 文件
第 4 行和第 5 行分别是 QQ 的账号密码,没什么用 直接删除就行了

再往下,会看到反向WS设置的配置
# 反向WS设置
- ws-reverse:
# 反向WS Universal 地址
# 注意 设置了此项地址后下面两项将会被忽略
universal: ws://your_websocket_universal.server
# 反向WS API 地址
api: ws://your_websocket_api.server
# 反向WS Event 地址
event: ws://your_websocket_event.server
# 重连间隔 单位毫秒
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
修改为以下内容
- ws-reverse:
universal: ws://127.0.0.1:8080/cqhttp/ws
# 重连间隔 单位毫秒
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
其中 ws://127.0.0.1:8080/cqhttp/ws
中的 127.0.0.1
和 8080
应分别对应 nonebot
配置的 HOST 和 PORT。
如果你的 nonebot
安装在另一台服务器上,请把 127.0.0.1
修改为另一台服务器的 IP(我就是在这一步没有配置好,导致一直连接失败)
配置完成,运行go-cqhttp
./go-cqhttp
会输出二维码,用登陆机器人账号的手机 QQ 扫一扫登录
(由于这两天腾讯老是抽风,这一步多试试才行)
此时 go-cqhttp 就配置完成并且成功运行了
3 安装Nonebot2
Nonebot2 文档: https://v2.nonebot.dev/guide/
(推荐)使用Virtualenv创建Python虚拟环境(也可以使用poetry创建)
安装 virtualenv
pip install virtualenv
创建虚拟环境,名称(nonebot)可以自己随意设置
virtualenv nonebot
进入虚拟环境文件夹
cd nonebot
激活环境,进入虚拟环境
source ./bin/activate
通过脚手架安装
使用 pip 或 其他包管理工具 安装 nb-cli,nonebot2 会作为其依赖被一起安装
pip install nb-cli
4 创建机器人
创建一个空项目
nb create
根据引导进行项目配置,完成后会在当前目录下创建一个项目目录
输入项目名称 我这里输入了qqbot
使用 ↓ 选择src文件夹
输入 y 回车
按下空格键
选择cqhttp(注意变色才是选中),回车
修改机器人的项目配置
修改 qqbot 文件夹中的 .env
中内容
ENVIRONMENT=dev
CUSTOM_CONFIG=common config
修改.env.dev
为:
HOST=0.0.0.0
PORT=8080
DEBUG=true
修改.env.pord
为:
HOST=0.0.0.0
PORT=8080
SECRET=
ACCESS_TOKEN=
上述文件中的 PORT
要和 go-cqhttp
的 config.yml
文件中反向WS端口
相同
在项目文件下使用命令行输入下述命令即可运行
nb run
由于我使用了虚拟环境需要使用下述命令先进入虚拟环境才能运行
sudo -i
cd nonebot
source ./bin/activate
cd qqbot
nb run
运行成功则会显示如下类似日志

5 检查 Nonebot2 和 go-cqhttp 是否通信成功
[0m[37m[2021-12-06 17:17:57] [INFO]: 开始尝试连接到反向WebSocket Universal服务器:
[0m[37m[2021-12-06 17:17:57] [INFO]: 正在检查更新.
[0m[37m[2021-12-06 17:17:57] [INFO]: 已连接到反向WebSocket Universal服务器
试试你的机器人是不是正常的,给你的机器人发消息吧
/echo 你好,世界

6 后台运行程序
上面的是前台运行,如果你操作其他命令或者关闭 ssh 工具,程序自然就关闭了
在检查一切正常之后,就可以使用命令进行后台启动了
分别进入对应的目录来分别执行下述命令
后台运行 go-cqhttp
nohup ./go-cqhttp &
后台运行 Nonebot2
nohup nb run &
在对应的文件夹下会生成 nohup.out
文件,这里存放运行的日志,可以用来查看是否正常运行
如果你想配置更多内容,可以查看 Nonebot2 和 go-cqhttp 的官方文档来进行配置。
7 使用 Nonebot2 插件
Nonebot2 插件商店:https://v2.nonebot.dev/store.html
还有一些商店没有收录的插件,你可以在 GitHub 中查找
