如何用 NapCatQQ 快速搭一个 7×24 在线的 QQ 机器人:从扫码登录到 OneBot 全协议接通的教程
【免费下载链接】NapCatQQModern protocol-side framework based on NTQQ项目地址: https://gitcode.com/gh_mirrors/na/NapCatQQ
做 QQ 机器人的开发者都懂这种痛:老协议端动不动掉线,登录态隔天就失效,环境依赖还得自己伺候。NapCatQQ 把这些一次性解决——它是基于 NTQQ 的无头机器人框架,完整实现 OneBot 11 协议,扫码登录后就能用 HTTP / WebSocket 收发私聊、群消息和群文件,把精力放回业务逻辑本身。下面按「跑起来 → 能干什么 → 怎么调稳 → 怎么扩展」的路线带你走完,每一步都对得上仓库里的真实模块。
先解决最卡人的地方:掉线、登录和环境依赖
选一个 QQ 机器人框架,最先该问的不是「有多少接口」,而是「它能不能一直活着」。传统自建协议端最常见的三个坑——长连掉线、登录态失效、底层环境依赖——NapCatQQ 都给了对应的工程化处理,而不是让你自己写重试逻辑:
- 底层跑在 NTQQ 之上。它不重新造协议,而是通过
wrapper.node加载 NTQQ 内核,消息、登录、数据包都走真实客户端链路,稳定性直接继承 QQ 官方实现。相关封装在 packages/napcat-core/index.ts。 - 主进程看门 worker。入口 packages/napcat-shell/napcat.ts 采用 Master/Worker 双进程:worker 意外退出会自动重新拉起,同一时间窗内反复崩溃才会停止,相当于一层兜底看门狗。
- 下线自动恢复。账号被踢(
KickedOffLine)或服务端静默判离线(SelfOffline)都会触发同一套恢复链路:同步 WebUI → 重启 Worker → 快速登录,见 packages/napcat-core/helper/offline-recovery.ts。 - 低内存也能长跑。官方把它列为核心特性之一,适合部署在配置不高的服务器上(README.md)。
对开发者来说,这意味着你不用为「机器人半夜死了没人发现」而焦虑,可以专注写业务。
🚀 五分钟扫码上线:从克隆到收到第一条消息
按 README 的建议,生产环境直接去 Release 页下载最新版运行最省事;想改代码或看实现,就从仓库拉源码。仓库是一个 pnpm monorepo(见 pnpm-workspace.yaml),所以克隆后装依赖用 pnpm:
git clone https://gitcode.com/gh_mirrors/na/NapCatQQ pnpm install源码运行时的构建动作都挂在根目录 package.json 的脚本上,按需执行build:shell、build:webui、build:plugin-builtin即可。
启动后登录有三种方式,任选其一:
- 扫码登录:控制台会打印二维码(也会落到缓存目录),手机 QQ 扫码授权,WebUI 上同步显示;
- 快速登录:命令行传
-q <QQ号>(等价--qq)对历史登录过的号一键上线; - 密码回退:设置
NAPCAT_QUICK_PASSWORD等环境变量,扫码失败时自动走密码登录。
登录成功即进入 WebUI(默认端口 6099),在这里配置网络通道、查看登录态、管理插件。首次使用建议先把官方文档过一遍,README 也明确提醒了这一点。
一条 HTTP 或 WebSocket 通道,私聊群聊都能收发
登录之后,机器人和你的应用之间靠的是标准 OneBot 11 通道。NapCat 把网络层做成了一组可独立开关的适配器(源码见 packages/napcat-onebot/network/),你在 onebot11.json 里按需打开:
| 通道 | 默认监听 | 典型用途 |
|---|---|---|
| HTTP Server | 127.0.0.1:3000 | 你的应用直接 POST 调 action |
| WebSocket Server | 127.0.0.1:3001 | 长连收事件,适合常驻机器人 |
| HTTP / WebSocket Client | 你指定 URL | 反向上报到你部署的服务 |
| HTTP-SSE Server | 你指定端口 | 服务端推送事件 |
收发消息、撤回、引用这些动作和事件都落在标准 OneBot 语义里:动作在 packages/napcat-onebot/action/msg/(send_msg、get_msg、delete_msg等),事件在 packages/napcat-onebot/event/(message/notice/request/meta四大类)。底层能力来自 apis/msg.ts。一个值得注意的细节:网络配置支持热重载,改端口或开关某个通道不用重启进程;撤回事件还做了去重缓存,避免同一条撤回被上报多次。
群管理、群文件和在线传输,按场景挑工具
消息通道通了之后,真正决定一个机器人「能不能干活的」是下面这些场景。NapCat 的 API 按业务域拆成了清晰的模块(packages/napcat-core/apis/),你按需求去对应位置找就行,不用背全量接口:
| 使用场景 | 能做什么 | 代码位置 |
|---|---|---|
| 群管理 | 踢人 / 禁言 / 群管、群签到、群公告、群相册、群待办 | apis/group.ts、action/group/ |
| 群文件与在线文件 | 群文件上传下载、文件夹管理、在线文件收发 | apis/file.ts、action/file/ |
| 闪传 / 快传 | 大文件走闪传通道 | apis/flash.ts |
| 好友与私聊 | 好友列表、加好友请求、私聊消息 | apis/friend.ts |
| 网页与数据 | Cookie、登录态、数据库辅助 | apis/webapi.ts、apis/database.ts |
几个高频场景值得单独说:
- 群管理:
set_group_kick/set_group_ban/set_group_admin之外,还有群签到列表、群相册、群公告这些标准 OneBot 不一定覆盖的操作,集中在 action/group/。 - 群文件:除了上传下载,还能流式传大文件(action/stream/),在线文件收发会作为独立事件上报。
- NapCat 扩展动作:在 action/extends/ 下有一批超出标准 OneBot 的能力,比如 OCR 识图、英文翻中文、群待办、群相册批量上传、Qzone 留言等;自定义数据包收发则在 action/packet/ 与 apis/packet.ts。
⚙️ 把这几个开关调好,机器人才能长期在线
稳定运行主要靠两份配置。核心配置 napcat.json 管日志、后端和对时,OneBot 网络配置 onebot11.json 管通道。几个真正影响稳定性的开关:
| 配置项 | 所在文件 | 作用 |
|---|---|---|
autoTimeSync | napcat.json | 自动对时,本地时间与服务器偏差超阈值会校正,防时钟漂移触发风控 |
consoleLog/fileLog/ 日志级别 | napcat.json | 控制台与文件日志的开关和级别 |
packetBackend/o3HookMode | napcat.json | 数据包后端与 hook 模式 |
httpServers/websocketServers的端口、token | onebot11.json | 各通道端口与鉴权 |
reportSelfMessage | onebot11.json | 是否上报机器人自己发出的消息 |
几条容易踩的坑,都来自代码里的真实处理:
- Windows Server 缺「媒体基础」组件会报「找不到指定模块」。原因是
QQNT.dll依赖mfplat.dll,需要装 Server-Media-Foundation 后重启,处理逻辑在 index.ts。 - 自动对时默认开启,每小时重同步一次;如果你用 NTP 且确认没问题,可用
autoTimeSync: false或环境变量NAPCAT_DISABLE_TIME_SYNC=1关掉。 - 多进程可关。想调试或环境受限,用
NAPCAT_DISABLE_MULTI_PROCESS=1切到单进程,命名管道也能用NAPCAT_DISABLE_PIPE禁用。 - 走代理设
NAPCAT_PROXY_ADDRESS+NAPCAT_PROXY_PORT即可,见 napcat-shell/base.ts 的handleProxy。
🔌 用插件和扩展协议,把整个生态接进来
NapCat 的可扩展性有两条正交的路:一条是「协议兼容」,一条是「插件」。
- OneBot 11 完整兼容意味着现成的 OneBot 工具、框架都能直接接上,迁移成本很低。NapCat 还单独实现了 napcat-protocol,提供超出标准 OneBot 的专属动作,想榨干 NTQQ 能力时用得上。
- 插件系统扫描插件目录动态加载(network/plugin/loader.ts),要求插件导出
plugin_init函数。为了安全,加载器内置了官方插件白名单和敏感词扫描,命中黑灰产关键词或不在白名单内的插件会被直接拒绝加载。 - 周边生态方面,README 的 Thanks 里推荐了 AstrBot(LLM Bot 框架)、MaiBot、qq-chat-exporter(基于 NapCat 的消息导出工具)等,可以直接组合使用。
想参与改进或提交新功能,仓库是开放的,按开源流程提 Pull Request 即可;也有 QQ 群 / Telegram 社区可以交流。作为非盈利项目,README 提醒了使用范围与合规责任——把它当消息推送和自动化工具来用就好。
跑通登录、接上一条通道、按场景挑好 API、把几个稳定性开关调对,一个能长期在线的 QQ 机器人就成型了。剩下的,交给你的业务逻辑。
【免费下载链接】NapCatQQModern protocol-side framework based on NTQQ项目地址: https://gitcode.com/gh_mirrors/na/NapCatQQ
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考