部署 Adachi 所适配的实现端的正确姿势
Adachi-BOT 目前已经接入了 onebot-11 标准,基于 OneBot-11 标准的实现端均可以使用,可以在这里查看。
这里以 go-cqhttp 为例。
qsign
qsign 是一个神奇的 Sign API,由 fuqiuluo/unidbg-fetch-qsign 提供。
原作者因不可抗力问题已删库,目前这个方式还能坚持多久还是未知数。
虽然讲的是实现端的部署,但 qsign 是一个绕不开的工具,不使用 ntqq 实现端或 qsign 时登录账号大概率会喜闻乐见的看到如下报错:
登录失败: 请前往QQ官网im.qq.com下载最新版QQ后重试,或通过问题反馈与我们联系。 Code: 45如果你使用的是 OpenShamrock 等基于 ntqq 的实现端,可跳过此节内容。
环境准备
- 安装
jdk1.8环境,这个百度都有。 - 下载 1.1.9 版本的编译包,下载后解压至一个目录。(注:如果下载速度缓慢或无法下载,请使用 GitHub 下载代理工具)。
部署
打开 txlib 目录后这里有多个版本,go-cqhttp v1.2.0 仅支持使用 8.9.63 版本,其他的例如 onebots 则对版本无要求。
无特殊需要的情况下最稳定的版本依然是 8.9.63,个别 QQ 账号会提示版本过低,此时需要选择更高版本的 txlib。
这里以 8.9.63 版本为例,其他版本配置基本相同。
进入 txlib\8.9.63 目录,打开 config.json 进行修改。
server.port: 修改为你希望 qsign 所运行的端口key: 修改为随意数字,不修改也行,记住它的值auto_register: 设置为true
回到根目录,执行命令启动 qsign:
# linux
bin/unidbg-fetch-qsign --basePath=txlib/8.9.63
# windows
bin\unidbg-fetch-qsign.bat --basePath=txlib\8.9.63未打印可见报错即表示启动成功。
go-cqhttp
下载
go-cqhttp 目前最新版本为 v1.2.0,下载地址: https://github.com/Mrs4s/go-cqhttp/releases/tag/v1.2.0
需要根据自己环境在 Assets 中确定需要下载的编译包。下载完毕后解压至一个目录。
部署
切换到解压后的目录,执行命令运行 go-cqhttp
./go-cqhttp
# windows
go-cqhttp.exe执行后将会提示选择需要的通讯方式,这里输入 2 (正向 Websocket 通信)并回车.
等待片刻后程序将会退出,且在当前目录生成 config.yml 配置文件。我们需要对这个配置文件的部分内容进行编辑:
account.uin: 待登录的 qq 号account.password: 待登录的 qq 密码account.sign-server: 填入上面 qsign 部分中所部署的 qsign 服务地址与对应的 key,示例:
sign-servers:
- url: 'http://127.0.0.1:11451' # 11451 改为刚刚配置的 qsign 服务端口
key: '1919810' # 上面 qsign config.json 中的 key 值servers.ws.address: 将0.0.0.0:8080中的8080,修改为自己期望 go-cqhttp 运行的端口,这里以默认8080为例。
配置完毕后再次运行上面的启动命令,go-cqhttp 将会开始尝试登录。当显示下面的打印日志时,说明 qsign 已连接成功:
[INFO]: 使用签名服务器 url=http://127.0.0.1:11451, key=1919810, auth=-等待 QQ 成功登陆提示,若此时仍提示 45 版本过低 报错,说明此账号已经无法在 8.9.63 版本登录,需要 qsign 使用更高版本的 txlib。
由于 go-cqhttp 仅支持 8.9.63,因此需要选用其他的实现端,例如 onebots。
Windows 用户可尝试使用 qsign-onekey 来解决 go-cqhttp + qsign 的版本过低问题
登陆成功后,前往 Adachi-BOT 修改 config -> base.yml 配置项内容,以连接到 go-cqhttp 实现端:
# go-cqhttp 默认 api 和 event 服务各自独立运行,因此此处两者均需要配置
# 将端口号改为上文中 go-cqhttp 所使用的 ws 端口
wsServer: 127.0.0.1:8080/event
wsApiServer: 127.0.0.1:8080/api启动 Adachi-BOT,显示 已连接到 xxx 事件服务器 即代表连接成功。
ntqq
目前比较稳定的实现端,采用onebot-11 标准,支持linux签名,如需使用windows和macOS协议,需要自行解决签名,文档
部署
使用docker进行部署
docker run -itd -p 8081:8081 -v /path-to-data:/app/data -e UID=$UID -e GID=$(id -g) ghcr.io/konatadev/lagrange.onebot:edge首次运行提示 Please Edit the appsettings.json to set configs and press any key to continue ,请参考文档
启动容器之后,会生成 /path-to-data/appsettings.json ,我们需要对该配置文件进行编辑:
Uin: 待登录的 qq 号 (为0启用扫码登录)Password: 待登录的 qq 密码(为""启用扫码登陆)
"Account": {
"Uin": 0,
"Password": "",
"Protocol": "Linux",
"AutoReconnect": true,
"GetOptimumServer": true
},有关WS的配置,请根据自己的需求进行选配映射( Adachi-BOT 中的 config -> base.yml ,参考reverseClient):
# /path-to-data/appsettings.json
{
# 反向代理
"Type": "ReverseWebSocket",
"Port": 8080,
},
{
#正向代理
"Type": "ForwardWebSocket",
"Port": 8081,
}以 reverseClient: false 为例(正向)
wsServer: server-IPv4:8081/event
wsApiServer: server-IPv4:8081/api配置完成后进入刚才启动的docker容器(账号密码登录)或直接打印容器logs(扫码登录),按提示进行登录操作
docker attach <container_id_or_name>
or
docker logs <container_id_or_name>最后,启动 Adachi-BOT,显示 已连接到 xxx 事件服务器 即代表连接成功。
其他实现端注意事项
其他实现端部署时各自参考对应的官方文档部署,部署成功后需要参考日志打印或文档说明获取到启动后的 event 与 api 服务地址,分别填入 Adachi-BOT 的 wsServer 与 wsApiServer 配置项中。
当实现端的 event 与 api 服务公用同一个地址时,仅填写 wsServer,wsApiServer 置空即可。
别人实现端就给了一个地址,那肯定就是
event与api服务共用这一个了
示例:
- onebots 可以在启动成功后的日志中得到其
api与event公用一个服务,服务地址为:ip:端口号/icqq/qq号/V11 - OpenShamrock 可在官网中得到其有两种服务配置方式:
api与event服务共用,地址:ip:端口号event使用ip:端口号,api单独使用ip:端口号/api
linux 的后台静默部署
不管是 qsign 还是 OneBot 实现,部署后的命令行窗口都不可以关闭。对于 windows 来说这是无关痛痒的问题,但 linux 则需要采取一些小手段。
这里仅以 screen 为例来解决这个问题:
安装 screen(centOS):
yum install screen在启动 OneBot 实现或 qsign 之前,先执行命令:
screen -S 服务名称之后会进入一个新的视窗,在此处执行 OneBot 实现或 qsign 的启动命令
之后通过快捷键 ctrl+a+d 快捷键退出当前视窗,以同种方式启动另一个服务
再次进入视窗时可以执行:
screen -r 服务名称一些其他 screen 命令可以参考:screen 命令