基于 NapCat 和 NoneBot2 搭建 QQ 机器人

滑稽mc 发布于 8 天前 1440 字 147 次阅读


本文将手把手指导你完成协议端 Napcat 的部署以及借助 Nonebot2 WebUI 进行 NoneBot2 机器人的创建、管理与开发,高效快速地完成 QQ 机器人的搭建及定制化插件开发。

一、组件介绍

NoneBot2 是一个现代、跨平台、可扩展的 Python 异步机器人框架。它本身不直接与聊天软件通信,而是由事件驱动,专注于处理接收到的消息事件,同时采用插件化架构,所有机器人功能都以插件形式运行,通过插件完成消息处理和回复。

NapCat 是一个基于 NTQQ 协议的 OneBot 协议实现框架。它负责与 QQ 进行通信,让机器人账号登录 QQ,实现消息的接收与发送。并将 QQ 内部通信协议标准化为 OneBot v11 协议格式,是连接 QQ 和 NoneBot2 的桥梁。它本身不包含业务逻辑,仅作为消息通道层。

Nonebot2 WebUI 是一个本地网页管理面板,为 NoneBot2 机器人提供一站式管理。不用记命令、不用碰代码,创建机器人、编写插件、查看日志、打开终端、监控服务器,全部在浏览器里以可视化方式完成,极大地方便了 NoneBot2 机器人的管理和开发。

NapCat 与 NoneBot2 的协作方式如下图:

sequenceDiagram
    participant User as QQ好友
    participant NC as NapCat
    participant NB as NoneBot2
    participant Plugin as 你的插件

    User->>NC: 1. 发送消息
    NC->>NC: 2. 转换为标准OneBot格式
    NC->>NB: 3. 通过WebSocket上报事件
    NB->>Plugin: 4. 分发事件给对应插件
    Plugin->>Plugin: 5. 执行逻辑处理
    Plugin->>NB: 6. 返回回复内容
    NB->>NC: 7. 下发回复指令
    NC->>User: 8. 调用QQ接口发送回复

二、准备工作

  • Python:3.10+
  • python3-venvDebian / Ubuntu 的 Python 默认不打包 venv(ensurepip)模块,需要先装 sudo apt install python3 python3-venv,其他系统用户请忽略本条
  • QQ 账号:使用小号,作为机器人账号(因为有一定封号风险)

本文以 Linux 环境进行讲解,Windows/MacOS 环境的部署方式大同小异,如遇问题请查阅文末官方文档

三、安装和部署 NapCat

3.1 安装

3.1.1 Windows 一键安装

  1. 前往 NapCatQQ 的 Releases 页面 下载 NapCat.Shell.Windows.OneKey.zip 无头绿色版本解压
  2. 点击 NapCatInstaller.exe 等待自动化配置
  3. 进去 NapCat.XXXX.Shell 目录
  4. 启动 napcat.bat

3.1.2 Linux 一键安装命令

curl -o \
napcat.sh \
https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh \
&& bash napcat.sh

如果官方源无法下载,可采用以下命令从 Github 拉取:

curl -o \
napcat.sh \
https://raw.githubusercontent.com/NapNeko/NapCat-Installer/main/script/install.sh \
&& bash napcat.sh

3.2 配置

3.2.1 启动 NapCat

Windows 下双击 napcat.bat 启动,随后打开 WebUI;

Windows WebUI

Linux 下执行 napcat 命令启动,进入 TUI 界面。

NapCat 菜单

3.2.2 登录 QQ 账号

进入菜单的 配置 选项,选择 添加新账号,输入准备好的机器人 QQ 号,提交后添加成功。

添加 QQ

然后进入对应 QQ 号的配置页,选择 反向ws 进行配置。

配置 QQ

名称任意,Token 自己设置并妥善保管,心跳间隔与重连间隔保留默认即可。

Url 填 ws://127.0.0.1:8080/onebot/v11/ws,这是为了对接我们的 NoneBot2 服务,8080 是 NoneBot2 的默认端口。

配置反向 ws

消息格式推荐选择 数组

消息格式

配置完成后回到菜单页,选择 启动 选项,选择我们的机器人账号进行启动。

启动账号

之后会生成一个二维码,我们用登录了机器人账号的 QQ 扫码登录。

登录 QQ

对应账号状态变为 运行中,即启动成功,NapCat 部分的配置也到此完成!

成功运行

四、借助 NoneBot2 WebUI 快速完成 NoneBot2 的部署与开发

4.1 安装 NoneBot2 WebUI

项目 Github 地址:NoneBot2 WebUI

4.1.1 Windows(PowerShell)

powershell -ExecutionPolicy Bypass -Command "Invoke-WebRequest -Uri https://raw.githubusercontent.com/HuajiMX/nonebot-webui/main/install.ps1 -OutFile install.ps1; .\install.ps1"

安装完成后,进入 nonebot-webui 文件夹,双击 启动WebUI.bat 打开浏览器 WebUI。

4.1.2 Linux / macOS

curl -fsSL https://raw.githubusercontent.com/HuajiMX/nonebot-webui/main/install.sh -o install.sh && bash install.sh

安装完成后,执行 cd nonebot-webui && ./.venv/bin/python start.py,然后打开浏览器访问 http://127.0.0.1:9527,按提示设置管理员账号,即可开始使用。

若部署在远程服务器,需要本地访问 WebUI,请先放行服务器 9527 端口,并在本地访问 http://[服务器 IP]:9527

4.2 启动 WebUI

安装完成并启动

登录 WebUI

4.3 机器人管理

通过 WebUI,我们能快速创建一个机器人。

创建机器人

在机器人列表可以清晰地看到机器人的各项信息与运行状态,以及快捷操作。

机器人管理

详情页也能方便快捷地从管理机器人的方方面面。

机器人详情

4.4 可视化插件编写

这是 NoneBot2 WebUI 的亮点功能之一,使我们定制简单功能插件时避免繁琐的代码,通过图形化方式快速搭建逻辑。

WebUI 提供了许多功能丰富的内置组件,也可自己编写自定义 Python 代码,未来我们会继续加入更多组件。

可视化插件编写

编写完可视化插件后在列表将其装配至机器人。

装配插件

可以测试插件运行效果或查看机器人运行日志。

运行效果

运行日志

五、写在最后

通过 NoneBot2 WebUI,我们能够便捷高效地进行 QQ 机器人的开发和管理。对于使用中遇到的问题或建议,欢迎提交 Issues

参考文献

  1. NoneBot2 官方开发文档
  2. NapCat 官方开发文档
  3. NoneBot2 WebUI Github
  4. 从零部署 QQ 机器人:NapCat + NoneBot2 完整指南 - CSDN