QQ机器人介绍
什么是QQ机器人
QQ机器人,简单来说就是为某个QQ号添加监听聊天信息的功能,该QQ号自动根据聊天信息触发相应的回复。
QQ机器人实现原理
机器人的基本结构分为前台监听和后台处理两部分。
通过前台机器人监听聊天信息判断是否需要调用后台服务,如果触发关键词,则调用后台服务;后台根据关键词启动相应的服务并返回结果给前端机器人,前端机器人将该结果发送出去。
🏠以餐馆类比,餐馆(QQ群)中顾客(群成员)在聊天过程中呼叫服务员(机器人)或者提出上菜服务(触发关键词),服务员将需求转达后厨(后台处理),后厨将做好的菜品(处理完成的结果)交给服务员并由服务员交给顾客(机器人发送至群聊)。
QQ机器人发展过程
以酷Q、晨风为代表的的机器人框架曾经是QQ机器人繁荣发展的代表。
2020年8月开始,腾讯对第三方机器人进行封锁,第三方QQ机器人逐渐没落。
之后腾讯逐渐推出官方的QQ机器人。第三方QQ机器人的使用有着被腾讯风控的风险。
写在前面
因此,现在QQ机器人的发展及使用场景并不理想,现存的一些收费提供服务的机器人对于小群主来说并不划算。本文也是基于兴趣,参照教程对搭建过程进行了一些探索而已。
如果你需要功能完善的QQ机器人服务,请寻找相应的机器人提供商。
😄如果你想了解QQ机器人基本原理或动手尝试实现基本的功能,请继续看下去。
基于go-cqhttp和NoneBot2的QQ机器人实现
环境要求
❗ ❗ Python3.8或以上版本
⚠️ 其他要求:准备一个QQ小号,避免风险控制对QQ大号造成影响。
💖最好有代码编辑器,推荐Vscode
文件目录结构
该项目文件结构如下:
1 | Qrobot |
前台搭建
下载go-cqhttp
在 go-cq-http项目中找到与系统适配的文件下载到gocq文件夹中
运行go-cqhttp_windows_amd64.exe
所有弹窗提醒选择确定即可。运行完毕得到go-cqhttp.bat
文件
运行go-cqhttp.bat
选择 3 "反向 Websocket 通信"
,得到 config.yml
配置文件,之后关闭窗口即可。
进行前台相关配置
打开config.yml
,手动更改下面两条:
1 | ... |
生成前台相关文件
1)运行go-cqhttp.bat
,等二维码出现后,使用要做机器人的QQ扫码登录。
⚠️注意在二维码出现前提前将窗口高度拉开,为二维码显示留出足够的空间。
⚠️若未能成功扫码,删除多出来的文件,仅保留上一步得到的三个文件,再次运行即可。
2)等程序稳定(反复出现:开始尝试连接到…连接到反向…),证明登录完成,此时在gocq
文件夹下会自动生成相关文件。
文件说明:
data:程序相关
logs:程序日志
config,yml:相关配置文件
device.json 保存设备信息,务必不要删除
go-cqhttp.bat:用于启动程序
go-cqhttp.exe:启动后运行的程序
session.token:QQ登录服务器后产生的token,后续不用再次扫码。如果以后登录不上,删除后重新扫码登录。
后台搭建
安装NoneBot第三方库命令行工具nb-cli
python 安装第三方库nb-cli
1 | pip install -i https://pypi.tuna.tsinghua.edu.cn/simple nb-cli |
NoneBot是一个现代、跨平台、可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持。
需要注意的是,NoneBot2 仅支持 Python 3.7.3 以上版本
生成后台文件
1)在文件夹bot
中,打开Windows PowerShell
2)输入 nb create
,开始生成机器人
各项填写内容如下:
(1)Project Name
输入后台文件夹的名字 如:nb2
(2)Where to store the plugin?
⬇️选择第二个
In a "src"folder
,回车提交该选项会创建src/plugin文件夹,用于存放个人插件
(3)Which builtin plugin(s) would you like to use?
空格选择第一个
echo
,回车提交该选项会创建一个内置插件
(4)Which adapter(s) would you like to use?
空格选择第一个
OneBot V11
,回车提交该选项会选择OneBot 作为适配器
等待安装完成,生成名为
nb2
的文件夹,即为生成的机器人后台文件
进行后台相关配置
1)进入nb2
文件夹,打开.env
,更改配置为
1 | ENVIRONMENT=prod # 设置后台运行时 环境配置文件 的路径 => 此处代表同级目录下的.env.prod文件 |
2)打开.env.prod
,清空内容并粘贴如下配置
1 | HOST=127.0.0.1 # 配置 NoneBot 监听的 IP/主机名 |
运行后台服务
有两种方法启动后台服务
1)在 nb2
目录下 使用python执行bot.py
文件
程序不报错且能看到相应的端口号即为运行成功:
2)在nb2
文件夹下打开 PowerShell 并输入nb run
测试机器人
开启服务
1)在gocq
文件夹下运行go-cqhttp.bat
,开启前台服务(不关闭)
2)在nb2
文件夹下开启后台服务(不关闭)
⭐后台服务显示连接已打开
,前台服务不再刷新信息
,说明前后台已成功开启。
私聊测试
QQ机器人的好友直接在聊天框中输入 /echo123
并发送
echo插件是后台安装时内置的插件,作用是重复内容,
/echo
是触发该功能的关键词
群聊测试
在群聊中@机器人并输入 /echo123
机器人自动回复,证明配置成功
安装插件
在NoneBot2插件商店中提供了多种插件,安装相应插件即可使用对应的功能。
选择插件
在商店页面选择想要的插件,查看安装及使用方法。
以人生重开模拟器为例:
点击右上角进入插件Github页面
查看插件安装及使用方法
安装插件
1)CTRL + C
退出服务器后台服务
2)执行安装代码
1 | nb plugin install nonebot_plugin_remake |
⚠️若提示出错,无法连接,看看是不是开了梯子,安装时记得关掉。
使用nb 或者pip 两种方式均可安装,推荐使用nb
nb 方法会直接将该插件加载到插件列表中,不需要进一步更改相关文件
⭐目前nb及pip方法安装插件均不再需要更改
bot.py
文件(🕓2022-03-31)
3)重新开启后台服务
1 | nb run |
4)测试插件
linux系统部署
视频最后一节部署至linux也已成功实现(Centos 7.6 64bit),过程不再叙述,请移步视频。过程中遇到的问题及解决方案如下:
安装screen
1 | yum install screen |
screen相关操作:
Centos screen的安装与使用_zhipengit的博客-CSDN博客_centos screen
linux(ubuntu/centos)下Screen退出方法-退出后继续运行、查看进度-陈新明博客 (chenxm.cc)
更新Python
安装插件过程中报错 _ssl
Python3.X安装后 pip3报错 ModuleNotFoundError: No module named ‘_ssl’_Liv2005的博客-CSDN博客