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博客

