0 前言
由于公众号的一些业务需要,以及大二的时候需要在新生群帮新生解答问题以及管理群聊,先后用过很多QQ机器人程序
Xposed模块
QQ机器人Windows程序
CoolQ
现在上面这两种都已经gg了
QQ官方也出了几个(非常不好用的)官方机器人
现在好像在内测QQ官方机器人的开发者接口(不用报什么希望)
这几天在网上找了好多资料,这些关键词对你入门可能会有帮助:go-cqhttp、mirai、MiraiGo、Nonebot2
目前我在用的程序
- 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中查找
哈哈,我就玩过云崽,和nonebot差不多,插件也是差不多一样。但是都腾讯检测到经常挂,虽说都会有人及时拿出解决方案,但是这种维护挺消耗精力的
好像挺复杂的