一、NapCat 的小小故事
二、NapCat 与其它框架的本质区别
- 协议端相比
并非完全自己实现 QQ SendMsg 这种功能,而是主动调用客户端存在的功能。 - Hook 端相比
NapCat 可以完全自身引导 QQ 程序的启动,而非借助客户端启动流程,所以 API 所有权几乎完全拥有,不需要 Hook。 - Electron IPC Hook 端对比
NapCat 本身并不依赖 Electron 与注入框架,调用来源 IPC 更下层封装的 Node 模块,也许甚至脱离 QQ 主程序运行。
三、NapCat 适配的系统
Windows、Linux、macOS、Android
https://napcat.napneko.icu/guide/boot/Shell
四、NapCat安装方法
系统:Debian 12,采用Linux一键使用脚本
curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh
建议安装cli脚手架,方便得很,别错过了,默认几秒后跳过安装,安装成功后提示信息
输入 xvfb-run -a qq --no-sandbox 命令启动。
保持后台运行 请输入 screen -dmS napcat bash -c "xvfb-run -a qq --no-sandbox"
后台快速登录 请输入 screen -dmS napcat bash -c "xvfb-run -a qq --no-sandbox -q QQ号码"
Napcat安装位置 /opt/QQ/resources/app/app_launcher/napcat
WEBUI_TOKEN 请自行查看/opt/QQ/resources/app/app_launcher/napcat/config/webui.json文件获取
注意, 您可以随时使用 screen -r napcat 来进入后台进程并使用 ctrl + a + d 离开(离开不会关闭后台进程)。
停止后台运行 请输入 screen -S napcat -X quit
执行命令即可选择扫码登录
xvfb-run -a qq --no-sandbox
后续可用cli脚手架napcat快捷命令
apcat start {QQ} 启动对应QQ号的NAPCAT
napcat stop {QQ}[可选] 停止所有[对应QQ号]的NAPCAT及DLC
napcat restart {QQ} 重启对应QQ号的NAPCAT
napcat status {QQ}[可选] 查看所有[对应QQ号]的NAPCAT
napcat log {QQ} 查看对应QQ号的NAPCAT日志
napcat startup {QQ} 添加开机自启动对应QQ号的NAPCAT及DLC
napcat startdown {QQ} 取消开机自启动对应QQ号的NAPCAT及DLC
napcat update 更新 NAPCAT及QQ
napcat rebuild 重建 NAPCAT及QQ
napcat remove 卸载 NAPCAT及QQ
napcat help 查看此帮助
napcat oldhelp 查看旧方法(若此脚本不生效)
五、NapCat基础配置
5.1 WebUI 配置
如果你有多于的开放端口,可通过 WebUI 进行配置。默认地址为 0.0.0.0
,即监听所有地址。
当配置了不可用的地址时 WebUI 将被禁用。默认端口为 6099
。
当端口被设置为 0
时将禁用 WebUI。
当端口被占用时,会自动对端口 +1,直到找到可用端口(最多尝试100次,失败则会禁用 WebUI),端口号会在启动日志中显示。
启动后可在启动日志中看到形如 [WebUi] WebUi Local Panel Url: http://127.0.0.1:6099/webui?token=xxxx
的token信息。
也可打开 webui.json
文件,在其中找到token。
{
"host": "0.0.0.0", // WebUI 监听地址
"port": 6099, // WebUI 端口
"prefix": "", // WebUI 工作前缀,此项功能将在进阶配置中解释
"token": "xxxx", //登录密钥,默认是自动生成的随机登录密码
"loginRate": 3, //每分钟登录次数限制
}
访问 http://ip:port/webui/
,可以进行以下便捷操作:
- 进入 QQ 登录,点击
QRCode
进行二维码登录。 - 登录成功后,即可进入网络配置。
- 配置完成后,点击保存,重启即可生效。
当端口无法使用时,可以采用文件配置
5.2文件配置OneBot服务
小白不推荐,注意 不要将注释填入,鉴权密钥token这里注意一下,后续可能需要
该配置文件名为 ./config/onebot11_xxxx.json
其中xxxx为对应QQ账户,主要是WS客户端
{
"network": {
"httpServers": [],
"httpClients": [],
"websocketServers": [],
// WS客户端组/反向WS 可以配置多个 这里演示为一个
"websocketClients": [
{
"name": "WsClient",// 名字不能重复 唯一标识
"enable": false,//启用状态
"url": "ws://127.0.0.1:8080/onebot/v11/ws",// 上报地址
"messagePostFormat": "array",// 消息上报格式 string/array
"reportSelfMessage": false,// 是否上报自身消息
"reconnectInterval": 5000,// 重连间隔
"token": "",// 鉴权密钥
"debug": false,// raw数据上报
"heartInterval": 30000,// 心跳周期
}
]
},
"musicSignUrl": "",
"enableLocalFile2Url": false,
"parseMultMsg": false
}
六、NapCat接入NoneBot框架
安装方法建议结合官方文档:https://nonebot.dev/docs/quick-start
- 配置 NoneBot这里假设你已经安装了 OneBot 适配器默认情况下,NoneBot 是启用了反向 ws 的,如果出现 403,可能是默认配置问题,需要配置
token
才能正常连接。具体方法为:修改 NoneBot 配置文件.env
,添加ONEBOT_ACCESS_TOKEN=你在 NapCat 中配置的 token
。然后,启动 NoneBot,可以看到 NoneBot 输出的端口号,如8080
。 - 配置 NapCat在 NapCat 配置添加反向 ws 地址,地址为
ws://127.0.0.1:8080/onebot/v11/ws
, 这里的8080
是 NoneBot 输出的端口号,/onebot/v11/ws
是 NoneBot onebot 适配器默认的路径
小提示:Debian 12建议虚拟环境内安装,可参考:https://www.szfx.top/python/debian-python3-venv-usages-for-running-permanent-programs.html
使用pm2进行nonebot进程守护,新建文件bot.sh,写入代码
nb run --reload
bot.sh开机自动运行
pm2 start bot.sh --name="nonebot"
pm2 save
pm2 startup
七、参考资料
1、NapCatQQ | 现代化的基于 NTQQ 的 Bot 协议端实现:https://napcat.napneko.icu/
2、NoneBot | 跨平台 Python 异步机器人框架:https://nonebot.dev/