大概五年前的时候用mirai做过一个qq bot,不过随着服务器到期,已经废弃了很久没有用过了。最近刚好在开发一个煤炉机,就想到最好可以推送到qq。稍微调查了一下mirai已经好久没有更新过了,似乎在QQ更新之后现在用的是NTQQ的生态了。于是研究了一下,NapCat+NoneBot的方案,生态很好文档也详细,总的来说还是很顺利的。
部署NapCat
服务器装的Ubuntu系统,所以图方便直接用的AppImage,自带了依赖什么都不用装。直接运行:
1 | ./QQ-44343_NapCat-v4.17.55-amd64.AppImage --no-sandbox |
直接会默认启动webui,在http://127.0.0.1:6099/webui?token=xxx. 进去总之先登录要用的QQ号,就成功启动了。
UI很漂亮,里面带终端,还能直接看服务器本地文件……不过既然是在公网服务器上跑感觉很不安全,所以还是配置了nginx反向代理,配置完就关了。
配置Websocket客户端
NapCat运行后是默认运行了OneBot11的,可以直接连接NoneBot。他们通过Websocket通信,首先在NapCat侧配置一个Websocket客户端,参考:

这里的Token记录一下
部署NoneBot
参考官方文档直接用pipx安装
1 | python -m pip install --user pipx |
然后按照文档一步步创建bot实例,注意适配器选OneBot11.
接下来在.env.prod文件中配置一下刚才的Token:
1 | ONEBOT_ACCESS_TOKEN=??? |
运行bot,它默认运行在127.0.0.1:8080.
1 | nb run |
稍等片刻,会和NapCat建立Websocket连接。如果成功的话,应该就可以看到这个QQ号的信息了。
写一个Bot插件
NoneBot是以插件为单位管理的。现在可以实现我们的插件了。
首先要创建一个插件,按照文档说的,先创建一个plugins目录,然后用下面的命令生成:
1 | nb plugin create |
我的煤炉机会定期爬煤炉然后把上新信息推送,在爬虫端配置推送到127.0.0.1:8080/mercari(Bot运行的端口),希望Bot收到请求之后就推送到对应的用户/群聊:
1 | from nonebot import get_app, get_bot |
大概就可以了。
- 本文作者: Frankenstein
- 本文链接: https://salty-frankenstein.github.io/blog/2026/04/11/【杂记】2026年如何制作一个qqbot/
-
版权声明:
本博客文章采用 CC BY-SA 4.0 协议进行许可。转载请注明作者与原文链接。