【NTQQ】利用LiteLoaderQQNT插件实现NTQQ对接机器人框架(Docker版)

更新记录

- 2024年6月12日 00:04:41更新:最新版本的linuxQQQQ_3.2.9_240606,更新LLonebot v3.26.6版本,增加了LiteLoaderQQNT-Kill-Update插件(禁用更新插件)。
- 2024年5月13日 09:33:46更新:最新LinuxQQ版本,最新LLOneBot v3.24.3版本。
- 2024年4月23日 12:59:05新增:wtqq手搓步骤图文教程,跟一键差不多,只是自己动手更知道应该如何操作。
- 2024年4月23日 06:58:13新增:wtQQ一键教程(WTQQ就是无头QQ,没有多余的界面,占用更小,不过稳定性还不确定),WTQQ基于napcat作者的,但是由于话题敏感,所以就不多说了。
- 2024年4月12日 08:54:39更新:升级了内置的QQNT版本到最新的3.2.7_240410,升级了LiteLoaderQQNT 到最新的1.1.1,升级了LLOneBot到v3.22.1。
- 2024年3月29日 06:50:53更新:新增插件:自动同意好友(魂焱编写)点击LiteLoaderQQNT-扩展即可看到(如果此插件有问题可以加群反馈)
- 2024年3月22日 08:51:16更新:同步官方插件3.18.3版本:新增可更新插件的选项(总算不用跟进了,自行手搓更新吧),配置文件有增加,不想改的可以自行去配置页面保存一下即可!
- 2024年3月14日 23:15:55更新:新增一键更新命令,请看文末!
- 2024年3月14日 21:26:08更新:同步官方插件3.14.1:发送视频不再通过上传群文件,现可以直接发送。
- 2024年3月12日 21:35:16更新:同步官方插件3.14.0
- 2024年3月8日 13:55:33更新,增加了sh脚本,简化更多操作,方便小白填参数即可部署,考虑到连通性问题,本想将配置文件放github方便一个脚本直接更新,脚本建议使用完成后删除,配置文件有相关更新再重新下载新的sh!(支持无界和autMan)
- 2024年3月5日 19:57:54更新LLOneBot插件到3.11.2版本,增加了删除文件时间为120秒,请重新修改配置文件
- 2024年2月28日 20:22:02新增无界配置
- 2024年2月28日 20:03:56更新了bot插件到3.10.0,增加邀请加群通知,发送文件的文件名,消息和通知上报的时间戳格式统一,都为毫秒,加群和加好友请求通知的post_type改为request
- 2024年2月27日 18:41:59更新了bot插件到3.9.0,增加FFmpeg支持。

前言

相信很多机器人玩家,都已经无路可去了,目前可以利用官方NTQQ来对接各框架(当然需要各框架支持)
首先感谢 青柠 博客地址:倾城于你 提供的一些思路。
感谢 群内魂焱 博客地址:魂焱小站提供部分技术的支持。
感谢 群内莫斯科的arm服务器提供。

打包的docker在魂焱打包的基础上改了一些,让QQ就算闪退或者崩溃,不影响到容器本身,用supervisor进行守护,使其配合自动登录功能,实现绝对的稳定,下面我们来进入正题

准备

  1. 准备一台服务器,amd64/arm64都可以,配置最好还是2核保底吧。
  2. 准备一个VNC软件。我会在群内准备一些手机上的和PC端的。这里直接用青柠提供的1Remote
  3. 准备手机登陆机器人QQ号,扫码

NTQQ相关

NTQQ一键脚本(适用于小白支持autMan/无界)

复制以下代码,在服务器发送即可。按照提示步骤输入正确参数,如果出现输错可以自行去文件夹内修改!(如果脚本有问题,欢迎加Q群反馈,找时间会优化。)搞好后就跳转下面的VNC连接接着连接操作

cd && curl -o "ntqq.sh" "https://raw.githubusercontent.com/baquanluomu/ntapiconfig/main/ntqq.sh" && chmod +x ntqq.sh && ./ntqq.sh

示例图:

WTQQ一键脚本(当前虽然占用很小,但是没界面!稳定性还未长久测!)

  • 建议常用网络环境登录机器人QQ!
  • sh写的稀烂,所以不要太勉强自己用
  • 目前没有过多的实测经验,多自己研究研究。
  • 重启容器命令:docker restart wtqq
  • 出码命令:docker logs wtqq
    cd && curl -o "wtqq.sh" "https://raw.githubusercontent.com/baquanluomu/ntapiconfig/main/wtqq.sh" && chmod +x wtqq.sh && ./wtqq.sh

手动搭建NTQQ(建议老手)

  1. SSH链接你的服务器,在root目录下,没有的请cd /root,然后输入下面命令创建对应文件夹并创建配置文件,请注意将记得换文字换成机器人的QQ号码
    mkdir -p LLOneBot && cd LLOneBot && touch config_记得换.json
请把记得换更改为机器人QQ号码
  1. 如果不确定是否成功,可以自行查看下目录或者ll看查目录。正确后我们进行编辑配置文件,配置地址端口。(并不是一定要vi如果有宝塔等或者nas等可以直接去目录手动修改哈,怎么方便怎么来)
{
  "ob11": {
    "httpPort": 3000,
    "httpHosts": [],
    "wsPort": 3001,
    "wsHosts": [
      "ws://autMan公网地址:端口号/qq/receive"
    ],
    "enableHttp": false,
    "enableHttpPost": false,
    "enableWs": false,
    "enableWsReverse": true,
    "messagePostFormat": "string",
    "httpSecret": "",
    "enableHttpHeart": false
  },
  "heartInterval": 60000,
  "token": "",
  "enableLocalFile2Url": true,
  "debug": true,
  "log": false,
  "reportSelfMessage": false,
  "autoDeleteFile": false,
  "ffmpeg": "/usr/bin/ffmpeg",
  "autoDeleteFileSecond": 120,
  "enablePoke": false,
  "musicSignUrl": ""
}
  1. 上面进入后,记得按键盘的i键,然后黏贴,并更改,按Esc结束编辑,输入:wq即可保存退出。
  2. 编辑改好后,咋们就先cd到根目录,拉取镜像并run容器(不用管arm或者amd什么的,直接拉取,会自动识别)
    docker run -d --name NTQQ  -v /root/LLOneBot/:/opt/QQ/resources/app/LiteLoaderQQNT/data/LLOneBot/ -p 5900:5900 -p 3000:3000 luomubiji/ntqq:latest
  3. 注意上面的name后面的NTQQ是可以更改的,还有-p 5900:5900 -p 3000:3000 这里的:前面的59003000是可以更改的,更改后代表后面的步骤都需要相应的替换。如果有端口冲突,还是更改为好,没有就不必更改,有没有很简单,自己用命令lsof -i:5900查看记得

VNC连接

  1. 首先VNC软件选择性很多,各个功能不一样,建所以这里直接用1Remote来演示,首先打开软件,右上角选择+号,选择添加,点击上方VNC,输入名称
VNC密码是:vncpasswd
  1. 往下拉找到地址,输入上面搭建NTQQ服务器的地址IP(可域名)+端口号,就是上面的第六步,里面的5900如果你有变动,改的什么就在此处填写什么(家宽openwrt或者爱快等,记得开放端口)。下面密码输入:vncpasswd (关于密码固定后续可能会优化为可自定义),然后保存。
  2. 保存后我们去双击你添加的,就会进行连接(如果遇到连接失败,你确定端口开放!且确定容器正常运行中!端口占用等问题!),连接成功后如图所示:
  3. 然后我们拿出我们准备好的机器人QQ手机,右上角+号,扫一扫,然后扫出来的二维码。并登陆,确定登录。出现确认最好勾选下次登录无需手机确认,如果遇到闪退,扫码后黑屏等,重新连接VNC就行。直到出现正常QQ登陆界面。然后就进行关键操作!!!

关键操作!

无界用户拉到最下查看下图1的反向设置,其他不变

  1. 点击设置,找到左边最下面的bot,点击进入,确定一下端口,还有对接奥特曼的地址和端口是否有,如果没有,手动填写,最好是去一开始的配置文件修改!还要开启debug!消息上保类型选择CQ码如图所示就完事了!然后点击左边的登录设置,将启动QQ自动登录打开,确认无需手机确认打开。接着找到最上的通用找到软件更新关闭!!
    autMan用户配置如图,IP+端口记得替换

无界用户配置

  1. NTQQ相关第3步的配置文件:
{
  "ob11": {
    "httpPort": 3000,
    "httpHosts": [],
    "wsPort": 3001,
    "wsHosts": [
      "ws://无界IP:端口号/api/bot/qqws"
    ],
    "enableHttp": false,
    "enableHttpPost": false,
    "enableWs": false,
    "enableWsReverse": true,
    "messagePostFormat": "string",
    "httpSecret": ""
  },
  "heartInterval": 60000,
  "token": "",
  "enableLocalFile2Url": true,
  "debug": true,
  "log": false,
  "reportSelfMessage": false,
  "autoDeleteFile": false,
  "ffmpeg": "/usr/bin/ffmpeg",
  "autoDeleteFileSecond": 120,
  "enablePoke": false
}
  1. VNC连接第5步图一示例:
  2. 无界web更改qqOutside.js示例图,请将适配器模式更改为ws,交互发送地址更改为NTQQ的地址加端口,记得开启适配器,图上没开而已,js路径在/bncr/BncrData/Adapter

更新命令

这里使用的是watchtower来更新,但是我不知道是个人原因还是什么原因,watchtower版本无论怎么拉取最新的都是1.3.0(删除了镜像也是),所以我建议如果您的watchtower版本很低的话,就是用下面命令拉取后出现第一行为1.7.1(2024年3月14日 23:18:12目前最新)以下的话,最好还是手搓拉取指定版本,注意更新是要时间的!且更新后还需要扫码登录,且要除了配置文件外的比如自动登录,取消更新都需要重新开关!

尾巴的NTQQ是容器名字!!!!

NTQQ指定用watchtower1.7.1更新(跟我类似情况)

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:1.7.1 -c --run-once  NTQQ

NTQQ通用更新命令

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --run-once NTQQ

WTQQ(手搓步骤)

首先说明,这是napcat作者写的,我就是搬过来罢了。不过由于敏感问题,就不多说。这个wtqq就是无头QQ,去除了ntqq多余的界面,所以占用什么的会更小点,但是具体稳定性还没有实测,看个人吧,如果本身服务器性能不行,可以尝试用这个,如果服务器性能可以就建议还是用NTQQ版,能更直观的看到界面

官方项目地址:

Gtihub:https://github.com/NapNeko/NapCatQQ
Docker:https://github.com/NapNeko/NapCat-Docker

  1. 首先使用下面命令会自动识别系统下载对应的包并解压命名为wtqq
    ARCH=$(uname -m) && TAG_NAME=$(curl -s https://api.github.com/repos/NapNeko/NapCatQQ/releases/latest | grep '"tag_name":' | cut -d '"' -f 4) && ZIP_NAME="" && if [ "$ARCH" = "x86_64" ]; then ZIP_NAME="NapCat.linux.x64.zip"; elif [ "$ARCH" = "aarch64" ]; then ZIP_NAME="NapCat.linux.arm64.zip"; fi && curl -L -o "$ZIP_NAME" "https://github.com/NapNeko/NapCatQQ/releases/download/${TAG_NAME}/${ZIP_NAME}" && unzip "$ZIP_NAME" -d wtqq_temp && mv wtqq_temp/* wtqq && rm -rf wtqq_temp && rm -f "$ZIP_NAME"
  2. 然后我们用命令拉取容器(注意命令!!要自己改):无界是:ws://ip:端口/api/bot/qqws autMan是:ws://ip:端口/qq/receive 切记ip和端口是无界或者autMan的ip和端口可以域名!
    docker run -d -e ACCOUNT=机器人QQ号 -e WSR_ENABLE=true -e WS_URLS="ws://无界或者奥特曼" -v /root/wtqq/:/usr/src/app/napcat/  --name wtqq luomubiji/wtqq:latest
  3. 拉取好后我们进入文件夹,删除多余的json,留下设置机器人QQ号的那个,打开-编辑messagePostFormat后面的值改成stringenableLocalFile2Url后面的改成true,下面的60000改成30000(这是心跳重连,一般30000就行了)记得保存

    4.以上搞定后我们重启容器

    docker restart wtqq

    5.然后发送下面命令,查看log会出现二维码,准备手机扫码即可,重启容器后大概等十来秒再输入下面命令,因为二维码解析还是要时间的,如果二维码不行,就复制日志上面的地址,去草料二维码复制过去生成即可!

    docker logs wtqq

WTQQ其他说明:

  • 重启容器:docker restart wtqq
  • 出码:docker logs wtqq
  • 只要出了二维码别管报错什么的,扫了登录OK能用就行了。。
  • 挂载出来的文件夹wtqq/config目录下的配置文件是可以自己修改的!比如对接其他的框架都可以,改后记得重启容器,出码,扫码登录!
    其他的待补充...
尾巴的wtqq是容器名字!!!!

WTQQ指定用watchtower1.7.1更新(跟我类似情况)

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower:1.7.1 -c --run-once  wtqq

WTQQ通用更新命令

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --run-once wtqq

总结

  • 看起来步骤很多实际就几步,尽量详细,防止有小白不知道按什么操作什么。
  • 关于闪退问题,这个确实无法解决,很多是图形处理的问题导致。不过很大部分已经解决了其稳定性,毕竟已经做到了自启自登守护等操作
阅读剩余
THE END