使用ntqq Napcat 对接 Nonebot

可供参考

Nonebot官网文档

https://nonebot.dev/
https://github.com/nonebot/nonebot2

Napcat官网文档

https://napneko.pages.dev/
https://github.com/NapNeko/NapCatQQ

Napcat部署

Linux Docker或macOS的安装方式,可以前往官网文档查看

Windows手动安装

  1. 前往 NapCatQQ 的 release 页面

  2. 下载NapCat.Shell.zip解压

  3. 安装完成 双击目录下launcher.bat即可启动 如果是win10 则使用launcher-win10.bat

注意 如果需要快速登录 将 QQ 号传入第二个参数即可

Win11: launcher.bat 123456 Win10: launcher-win10.bat 123456

注意Releases里提示的ntqq的版本要求

Linux一键使用脚本

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

需已安装whiptail,否则脚本会自动退出,可以用apt/yum安装

或者在原安装命令后面添加以下参数

  1. --docker [y/n]: --docker y 为使用docker安装反之为shell安装

  2. --qq "123456789": 传入docker安装时的QQ号

  3. --mode [ws|reverse_ws|reverse_http]: 传入docker安装时的运行模式

  4. --confirm: 传入docker安装时的是否确认执行安装

  5. --proxy [0|1|2|3|4|5|6]: 传入代理, 0为不使用代理, 1为使用内置的第一个,不支持自定义, docker安装可选0-7, shell安装可选0-5

  6. --dlc [y/n]: shell安装时是否安装dlc

  7. --cli [y/n]: shell安装时是否安装cli

  8. --force: 传入则执行shell强制重装

仓库地址: NapCat.installer

安卓Termux部署

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

仓库地址: NapCat.installer

p.s. 会自动创建一个napcat的proot容器

可以使用proot-distro login napcat进入该容器

容器内输入 xvfb-run -a qq --no-sandbox 命令启动 Napcat,添加参数-q qq号自动登录。

关于多任务,这里使用screen,参数-r id进入任务,-s id创建任务,使用ctrl + A + D退出该任务(后台运行非终止任务)

上述部署脚本已经全部配置好了,使用以下命令从termux内一键启动Napcat(termux->screen->proot容器->Napcat)

screen -dmS napcat bash -c 'proot-distro sh napcat -- bash -c "xvfb-run -a qq --no-sandbox -q 3336701131"'

修改onebot配置

在Napcat成功启动并登录后,进入Napcat根目录config文件夹下,可以找到类似onebot11_12345678.json使用qq号结尾的json文件

{
  "http": {
    // 是否启用http服务, true为启动,false为禁用
    "enable": false,
    // HTTP服务监听的 ip 地址,为空则监听所有地址
    "host": "",
    // http服务端口
    "port": 3000,
    // http上报密钥,可为空
    "secret": "",
    // 是否启用http心跳
    "enableHeart": false,
    // 是否启用http上报服务
    "enablePost": false,
    // http上报地址, 如["http://127.0.0.1:8080/onebot/v11/http"]
    "postUrls": []
  },
  "ws": {
    // 是否启用正向websocket服务
    "enable": false,
    // 正向websocket服务监听的 ip 地址,为空则监听所有地址
    "host": "",
    // 正向websocket服务端口
    // 当port与http服务port一致时,host也需与http服务host保持一致,否则可能会导致启动失败
    "port": 3001
  },
  "reverseWs": {
    // 是否启用反向websocket服务
    "enable": false,
    // 反向websocket对接的地址, 如["ws://127.0.0.1:8080/onebot/v11/ws"]
    "urls": []
  },
  "GroupLocalTime": {
    "Record": false,//是否开启本地群聊时间记录
    "RecordList": []//开启全部群 ["-1"]  单个群配置 ["11111"] 多个群 ["1","2","3"]
  },
  // 是否开启调试模式,开启后上报消息会携带一个raw字段,为原始消息内容
  "debug": false,
  // ws心跳间隔,单位毫秒
  "heartInterval": 30000,
  // 消息上报格式,array为消息组,string为cq码字符串
  "messagePostFormat": "array",
  // 是否将本地文件转换为URL,如果获取不到url则使用base64字段返回文件内容
  "enableLocalFile2Url": true,
  // 音乐签名URL,用于处理音乐相关请求
  "musicSignUrl": "",
  // 是否上报自己发送的消息
  "reportSelfMessage": false,
  // access_token,可以为空
  "token": ""
}
# 如无特别的环境,一般这样配置就可以了
"ws": {
    "enable": true,
    "host": "127.0.0.1",
    "port": 3001
},
"reverseWs": {
    "enable": true,
    "urls": ["ws://127.0.0.1:8080/onebot/v11/ws/"]
},

Nonebot部署

NoneBot 仅支持 Python 3.9 以上版本

Termux内如何安装python3可以查看这篇文章

安装脚手架

确保你已经安装了 Python 3.9 及以上版本,然后在命令行中执行以下命令:

  1. 安装 pipx

    python -m pip install --user pipx
    python -m pipx ensurepath
  2. 如果在此步骤的输出中出现了“open a new terminal”或者“re-login”字样,那么请关闭当前终端并重新打开一个新的终端。

  3. 安装脚手架

    pipx install nb-cli

安装完成后,你可以在命令行使用 nb 命令来使用脚手架。如果出现无法找到命令的情况(例如出现“Command not found”字样),请参考 pipx 文档 检查你的环境变量。

创建项目

使用脚手架来创建一个项目:

nb create

这一指令将会执行创建项目的流程,你将会看到一些询问:

  1. 项目模板

    [?] 选择一个要使用的模板: bootstrap (初学者或用户)
  2. 这里我们选择 bootstrap 模板,它是一个简单的项目模板,能够安装商店插件。如果你需要自行编写插件,这里请选择 simple 模板。

  3. 项目名称

    [?] 项目名称: awesome-bot
  4. 这里我们以 awesome-bot 为例,作为项目名称。你可以根据自己的需要来命名。

  5. 其他选项 请注意,多选项使用空格选中或取消,回车确认。

    [?] 要使用哪些驱动器? FastAPI (FastAPI 驱动器)
    [?] 要使用哪些适配器? OneBot v11 (OneBot v11 协议)
    [?] 立即安装依赖? (Y/n) Yes
    [?] 创建虚拟环境? (Y/n) Yes
  6. 这里我们选择了创建虚拟环境,nb-cli 在之后的操作中将会自动使用这个虚拟环境。如果你不需要自动创建虚拟环境或者已经创建了其他虚拟环境,nb-cli 将会安装依赖至当前激活的 Python 虚拟环境。

  7. 选择内置插件

    [?] 要使用哪些内置插件? echo
  8. 这里我们选择 echo 插件作为示例。这是一个简单的复读回显插件,可以用于测试你的机器人是否正常运行。

运行项目

在项目创建完成后,你可以在项目目录中使用以下命令来运行项目:

nb run

你现在应该已经运行起来了你的第一个 NoneBot 项目了!

收尾

在两者都部署完成后,同时启动,如果看到Nonebot端出现以下log,则代表连接成功。

11-06 15:34:31 [INFO] uvicorn | ('127.0.0.1', 3814) - "WebSocket /onebot/v11/ws/" [accepted]
11-06 15:34:31 [INFO] nonebot | OneBot V11 | Bot 3336701131 connected
11-06 15:34:31 [INFO] websockets | connection open

此时可以尝试在群内@该机器人回复@bot /echo hello,如果机器人回复则代表bot部署完成了。

使用ctrl + C退出nonebot,输入nb plugin查看nonebot的插件库,愉快地丰富自己的机器人!


使用ntqq Napcat 对接 Nonebot
https://blog.yamds.fun/archives/napcat-connect-nonebot
作者
Yamds
发布于
2024年11月06日
更新于
2024年11月06日
许可协议