
使用Nonebot2和QQ插件搭建QQ机器人
本文最后更新于 2024-11-07,文章内容可能已经过时。
写在前面-关于QQBOT
0.1-gocqhttp作者的话
由于QQ官方针对协议库的围追堵截
持续👊🐔, 不断更新加密方案, 我们已无力继续维护此项目.
在未来sign-server
方案彻底被官方封死之后go-cqhttp
将无法继续使用.
同时NTQQ
的出现让我们可以使用官方 完美 实现的协议实现来继续开发Bot, 不再担心由于协议实现不完美而导致被识别.
我们建议所有QQBot项目开始做好迁移至无头NTQQ
或类似基于官方客户端技术的准备以应对未来的彻底封锁,
如果你的go-cqhttp
还能继续使用, 不建议立即迁移, 但请开始阅读相关文档并做好迁移准备推荐项目:
如果你想在电脑/服务器上部署bot ->https://chronocat.vercel.app/blog/0050如果你想在Android
手机/模拟器上部署bot ->https://github.com/linxinrao/Shamrock以上项目均为调用官方协议实现
以上项目均被请喝茶了,只能说有缘再见了.相关问题可以在这个
issue
下讨论协议库的时代已经过去, 接下来是Hook官方客户端的时代了, 感谢大家三年来的支持
其实go-cqhttp项目最初只是想做一个能在路由器上跑的酷Q——————————————————————
什么是无头NTQQ?众所周知, QQ官方最新推出的
NTQQ
客户端使用了electron
技术, 该技术可以非常方便的跨平台同时使用前端已有的技术栈进行客户端开发.NTQQ
客户端项目分为前后端两个部分, 前端是使用 Web 技术开发的 UI 界面供用户交互,后端使用nodejs addons
技术包装了一个库来处理客户端逻辑和与服务端通信 (wrapper.node
).
这个库的作用和go-cqhttp
非常相似, 所以我们完全可以将前端删除只与这个库交互, 并引出API
来为我们的Bot服务.
从服务端视角来说我们的 Bot 和正常客户端一样, 因为都是通过wrapper.node
与服务端通信. 并且由于是官方根据内部文档开发的模块, 我们可以说这是一个 完美 的go-cqhttp
.优点: 无头模式下相对低的占用.
缺点: 可能会受未来QQ更新的影响.
原文地址 QQ Bot的未来以及迁移建议 · Issue #2471 · Mrs4s/go-cqhttp
0.2-gocqhttp现状
任何基于gocqhttp的框架,一键部署,云崽等,大部分已经无法登录
使用其他方式绕过登陆的,也会有极大的封号/冻结风险
包括各种形式的QQ云端等
0.3-个人对QQBOT未来的看法
go-cqhttp 项目标志着 QQ 机器人的一个时代。
我有幸亲眼见证了 go-cqhttp 从诞生到发展的所有历史节点。go-cqhttp 诞生时 CoolQ 还没有退场,那个时候机器人圈闭源横行。是 go-cqhttp (和 mirai) 推动了整个社区的开源化,并孵化出欣欣向荣的众多框架。作为一位开源开发者,我由衷的感谢 go-cqhttp 的每一位开发者为生态做出的贡献。
这些年辛苦了。
gocqhttp无疑是QQBOT的一个时代,然而,这个时代落幕了
官方打击QQ机器人的力度越来越大,哪怕是使用LiteLoaderQQNT注入QQ再通过第三方模块实现类似gocqhttp的效果,我仍然担心被官方制裁。毕竟对于官方来说,彻底封杀QQBOT太简单了,只是官方睁一只眼闭一只眼而已。
这篇文章可能也会随着之后QQ官方对无头NT等模式的封杀力度越来越大而失效,且看且珍惜
以后QQBOT的路只会越来越曲折,祝现在这种模式能多活几天吧
以下教程是我目前测试下来比较稳定的方法
go-cqhttp --R.I.P
1-下载Python
1.1-前往阿里云镜像下载Python
如果你部署qq机器人的主机在境外,请直接去看1.2,你无需使用镜像源(用不用都行)
前往 https://mirrors.aliyun.com/python-release/ 阿里云镜像,选择对应平台,安装Python
请确保你的Python版本在 3.9 以上,Windows版本最低为10
推荐使用版本: Python 最新版本
https://mirrors.aliyun.com/python-release/windows/python-3.13.0rc3.exe
1.2-前往官网下载Python
不推荐国内使用!会导致下载速度只有几十k!!
官网: python.org
选择好对应的版本往下滑找到exe文件直接下载即可
2-安装Python环境
演示的Python版本与实际安装可能不同,请以实际使用为准,尽量使用新版本Python
(重要!!!)勾选下面的两个选项,一定要勾选上!!!
然后直接点Install Now,不建议安装到其他路径,可能会出现奇异古怪的bug
等待一会安装完成进行下一步~
3-安装nb-cli脚手架
3.1-检查Python安装状态
Windows11在桌面按Win+X,在弹出的菜单中,选择”终端管理员“
Windows10按一下Win之后输入cmd,选择管理员打开
之后在终端中输入 python 如果有输出内容,则说明安装成功
如果没有看见输出内容,或提示命令不存在,请重启电脑然后重新打开终端输入命令
3.2-更换pip镜像源
如果你是国外用户可以直接跳过这一步!
打开终端(cmd) 输入以下命令,切换成清华镜像源
python -m pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
看到以上输出就代表成功了,可以开始下一步了
3.3-安装nb-cli脚手架
直接在终端里输入
pip install nb-cli
等待最后完成即可
等待终端里出现 Successfully installed 字样之后,就完成nb-cli安装了
3.4-检查nb-cli安装状态
关闭当前的终端,重新再打开一个新的终端,输入 nb 回车
如果看到以下输出,就表明你已经成功安装了nb-cli脚手架
4-安装QQ插件
QQ插件的作用是收发信息,把QQ收到的信息发送给机器人后端进行处理,等待后端处理完成后,再把处理后输出的消息发送出去
4.1-安装QQNT
前往 im.qq.com 下载最新的QQNT版本
下载好之后直接安装,不要更换路径,不要更换路径!!!
4.2-安装LiteLoaderQQNT
先放点链接:
官方网站 LiteLoaderQQNT
官方GitHub LiteLoaderQQNT/LiteLoaderQQNT: QQNT 插件加载器:LiteLoaderQQNT —— 轻量 · 简洁 · 开源 · 福瑞
官方GitHub镜像站(上面那个进不去用这个) 镜像站
下面有三种方式安装LiteLoaderQQNT,一般来说第一种即可
安装时请确保所有的QQ进程全部结束!
(右键任务栏打开任务管理找QQ.exe,把他们全结束掉!)
如果安装之后打开QQ出现报错,请直接卸载QQ重装然后跳到4.2.3 手动安装!!
4.2.1-使用第一种方式安装LiteLoaderQQNT
Releases · Mzdyl/LiteLoaderQQNT_Install
镜像站 镜像站
使用 Py使用 Python 编写的安装脚本,支持 Windows Linux MacOSthon 编写的安装脚本,支持 Windows Linux MacOS
使用安装工具一键安装,下载最新的Releases,然后右键运行等待即可
4.2.2-使用第二种方式安装LiteLoaderQQNT
Releases · huiyadanli/RevokeMsgPatcher
镜像站 镜像站
微信/QQ/TIM防撤回补丁,对 QQNT 安装 LiteLoaderQQNT
同上,打开后选择QQNT安装即可
4.2.3-手动安装LiteLoaderQQNT
4.2.3.1-安装前的准备工作
你需要先下载 LiteLoaderQQNT 到任意位置,以下有两种方式
Release(推荐,正式发布版本)
前往 LiteLoaderQQNT 仓库,在 Release 的 Latest 下载LiteLoaderQQNT.zip
文件解压到任意位置
Clone(不推荐,开发中版本)
使用 Git 工具将 LiteLoaderQQNT 仓库 Clone 到本地任意位置
shell
git clone --depth 1 https://github.com/LiteLoaderQQNT/LiteLoaderQQNT.git
对于 Windows 系统用户,还需要去除 QQNT 文件校验,以下有两种方式
DLLHijackMethod(推荐,简单好用)
在 Release 下载 dll 文件,重命名为 dbghelp.dll 放入 QQ.exe 同级目录下即可
修改文件手动安装
先找到 app 文件夹的路径,修改里面的两个文件
查看 QQNT 根目录,是否存在
versions
文件夹(右键桌面QQ快捷方式,选择打开文件位置)
是,则路径为
QQNT\versions\版本号\resources\app
否,则路径为
QQNT\resources\app
在 app 目录中,创建一个文件,修改一个文件
创建
app/app_launcher/*.js
文件,其中 * 为文件名可随意设置,写入require(String.raw`*`)
其中 * 为 LiteLoaderQQNT 的路径修改
app/package.json
文件,将main
后面的路径改为./app_launcher/*.js
其中 * 为你刚才创建的文件名
4.2.3.2-更改插件数据目录
(如果只是做QQBOT可以忽略这一步)
支持设置 LITELOADERQQNT_PROFILE
环境变量指定 data
plugins
存储位置,即可不在本体目录进行读写操作,比如 MacOS 与 Linux 平台 QQNT,以及类似于 flatpak 打包的 QQNT,让其实现成为可能
如果你想将本体与存储目录合并在一起需将 LITELOADERQQNT_PROFILE
环境变量删除,将 data
plugins
移动回本体根目录下
4.3.3.3-检查是否安装成功
按照上述教程完成安装后,有两种方法检查 LiteLoaderQQNT 是否成功安装
运行 QQNT 并打开设置,查看左侧列表是否出现
LiteLoaderQQNT
选项使用终端运行 QQNT 查看是否有 LiteLoaderQQNT 相关内容输出显示(我没有但是安装成功了,以上一条为准)
如果有显示,即安装成功,玩的开心!
4.3-安装NapCatQQ
4.3.1-通过插件列表查看安装
打开你的QQ设置,如果有 ”插件列表查看“ 这个插件,直接打开找到NapCatQQ安装即可
如果没有,跳转到 4.3.2 手动安装NapCatQQ
安装好之后重启QQ,就可以看见了
4.3.2-手动安装NapCatQQ
前往NapCatQQ的GitHub仓库
下载 NapCat.Framework.zip
在LiteLoaderQQNT选择下载的zip包作为插件安装,安装完后重启即可
4.4-配置NapCatQQ插件
打开NapCatQQ的设置界面
把 启用反向 WebSocket 服务 打开
地址填写
ws://127.0.0.1:8080/onebot/v11/ws
注意点击下面保存!!
到此,QQ插件的部分算是配置完成了
5-创建第一个机器人实例
5.1-创建机器人的目录
如果你懒得折腾,可以直接跳过这步,去看5.2
首先,打开你的此电脑,找到你机器人要的盘,例如D:,点进去从新建一个文件夹,例如Bot
然后Win+X打开管理员终端,输入
D:
cd Bot
以上只是示例,按照实际输入
5.2-创建机器人实例
在终端中输入nb
选择 创建一个 NoneBot 项目 直接回车
按↓选择 simple(插件开发者) 回车
很多教程里都选择bootstrap,但其实两者并无很大差别,simple还提供基础配置,而bootstrap不提供,故此选择simple
项目名称随便写,不带中文就行
适配器选择OneBot V11 ,按空格选择 回车确认
驱动器默认即可,直接回车
插件存储位置默认,直接回车
立即安装依赖和创建虚拟环境全部y回车
等待安装完成后选择内置插件echo 按空格选择然后回车确认
看见以上名字后,输入
cd 你的项目名
nb run --reload
即可启动机器人
tips:Python有时候非常的玄学,可能在我的电脑上安装依赖报错等但是在别人电脑上就没有任何问题
例如我本地用Python 3.10.11的最后一个版本跑Nonebot项目就会直接安装依赖报错
(虽然我用Python3.13也一样报错)但是用云端的挂机宝去跑就没有任何问题,明明操作都是一样的但就是非常玄学.png
上面的这个报错貌似可以通过安装C++编译器来解决,反正代码是这么写的.jpg
当你看到最后显示开放8080端口的时候,恭喜,你的Nonebot已经运行起来了
参考4.4配置完成NapCat之后,你应该会在终端看见:
如果你的终端中显示了机器人的QQ号,那么恭喜,你的机器人已经运行起来了,并且已经可以收发消息了
机器人默认安装了 echo 插件,可以用这个命令来测试机器人是否运行
@机器人 /echo 测试
6-安装插件以及后续维护
6.1-安装插件
既然搞了机器人,怎么能局限于官方提供的默认插件呢?肯定要弄点色图插件来玩啊
Nonebot拥有官方的插件商城,数量600+插件
这里演示安装 KomoriDev/nonebot-plugin-kawaii-status: NoneBot2 服务器状态查看插件 / View server status for NoneBot2
首先在Nonebot商店中找到插件的卡片,点击卡片的GitHub链接
(如果进不去可以把链接后面的github.com换成github.site)
然后去找带有nb-cli安装字眼的命令
nb plugin install nonebot-plugin-kawaii-status
将这一段命令粘贴到终端,然后直接回车安装即可
注意:安装时终端必须cd进机器人的文件夹内
如果正在运行机器人按Ctrl+C退出后安装
等待自行下载完成即可
大部分插件这样弄了之后就可以直接
nb run --reload
重启机器人加载插件了,但是如果你一直报奇奇怪怪的error安装不上那就是Python的玄学问题了
一般来讲解决方案就是三种
直接放弃研究QQ机器人
找到报错原因和Python硬刚
更换一个同类型的插件
注意:部分插件需要配置之后才能使用,具体看插件的GitHub仓库说明
输入启动命令中如果你在终端里看见了相应的提示,那就说明安装成功,可以开始使用了
如果遇到了报错,建议直接删除插件换成同类型其他的插件,不建议折腾Python。毕竟这东西很玄学不是吗
插件效果:
6.2-删除插件
在终端中进入要删除插件bot的目录
输入nb
选择插件管理
选择移除当前项目中的插件
如何知道插件名称?通常查看该插件安装命令即可
例如上面演示的插件
nb plugin install nonebot-plugin-kawaii-status
那么 nonebot-plugin-kawaii-status 就是插件名
输入进去,按y回车就成功删除了
如果提示找不到模块等奇怪报错那就是Python的玄学问题了,目前没有很好的解决方案
6.3-后续维护
QQBOT随时可能会被TX官方封杀,目前讲的就是一个能跑就别动
毕竟Python的奇妙玄学,可能哪一天就算你只是重启了一下Bot,Python都能直接给你开摆
建议配合xh321/LiteLoaderQQNT-Kill-Update: LiteLoaderQQNT 插件 - 关闭自动更新弹窗插件使用,把QQ更新关了
毕竟谁知道啥时候QQ更新会不会把模块一起搞挂掉
维护主要是升级版本,这个就见仁见智了,我的建议是能跑就别动,动了十分的容易炸
7-最后
经历了三年的go-cqhttp时代,随着官方对野生机器人的制裁力度越来越大,目前QQBOT的选择已经不多了
QQBOT,酷Q的时代已经过去了,即使是一场永不落幕的嘉年华,现在也即将关停了
未来,QQBOT的路一定是充满艰辛险阻的
.
我写这篇文章是因为目前的教程大部分还是基于Nonebot1+gocqhttp
或是已经过时的Nonebot 2.0.0测试版+gocqhttp 这篇写一个详细的使用NapCat部署的教程,供各位娱乐
End