使用ntqq Napcat 对接 Nonebot
可供参考
Nonebot官网文档
https://nonebot.dev/
https://github.com/nonebot/nonebot2Napcat官网文档
https://napneko.pages.dev/
https://github.com/NapNeko/NapCatQQ
Napcat部署
Linux Docker或macOS的安装方式,可以前往官网文档查看
Windows手动安装
下载NapCat.Shell.zip解压
安装完成 双击目录下
launcher.bat即可启动 如果是win10 则使用launcher-win10.bat
注意 如果需要快速登录 将
Win11:
launcher.bat 123456Win10: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安装
或者在原安装命令后面添加以下参数
--docker [y/n]: --docker y 为使用docker安装反之为shell安装
--qq "123456789": 传入docker安装时的QQ号
--mode [ws|reverse_ws|reverse_http]: 传入docker安装时的运行模式
--confirm: 传入docker安装时的是否确认执行安装
--proxy [0|1|2|3|4|5|6]: 传入代理, 0为不使用代理, 1为使用内置的第一个,不支持自定义, docker安装可选0-7, shell安装可选0-5
--dlc [y/n]: shell安装时是否安装dlc
--cli [y/n]: shell安装时是否安装cli
--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 及以上版本,然后在命令行中执行以下命令:
安装 pipx
python -m pip install --user pipx python -m pipx ensurepath如果在此步骤的输出中出现了“open a new terminal”或者“re-login”字样,那么请关闭当前终端并重新打开一个新的终端。
安装脚手架
pipx install nb-cli
安装完成后,你可以在命令行使用 nb 命令来使用脚手架。如果出现无法找到命令的情况(例如出现“Command not found”字样),请参考 pipx 文档 检查你的环境变量。
创建项目
使用脚手架来创建一个项目:
nb create这一指令将会执行创建项目的流程,你将会看到一些询问:
项目模板
[?] 选择一个要使用的模板: bootstrap (初学者或用户)这里我们选择
bootstrap模板,它是一个简单的项目模板,能够安装商店插件。如果你需要自行编写插件,这里请选择simple模板。项目名称
[?] 项目名称: awesome-bot这里我们以
awesome-bot为例,作为项目名称。你可以根据自己的需要来命名。其他选项 请注意,多选项使用空格选中或取消,回车确认。
[?] 要使用哪些驱动器? FastAPI (FastAPI 驱动器) [?] 要使用哪些适配器? OneBot v11 (OneBot v11 协议) [?] 立即安装依赖? (Y/n) Yes [?] 创建虚拟环境? (Y/n) Yes这里我们选择了创建虚拟环境,nb-cli 在之后的操作中将会自动使用这个虚拟环境。如果你不需要自动创建虚拟环境或者已经创建了其他虚拟环境,nb-cli 将会安装依赖至当前激活的 Python 虚拟环境。
选择内置插件
[?] 要使用哪些内置插件? echo这里我们选择
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的插件库,愉快地丰富自己的机器人!