本文是作者记录和参考如何构建口袋48监听机器人,来实时检测小偶像口袋房间动态。基本备份自他人的文档。
基本准备
- 云服务器
- 平台选择:更推荐腾讯云,简言优点就是便宜、简洁、友好。
- 类型与配置选择:云服务器/轻量应用服务器均可,不缺钱可稍升配置到2核4G。一般来说轻量服务器足够用了。
搭建指南-创建服务器篇
- 在平台购买服务器时,地域选择离自己最近的城市,对镜像如无了解或其他需求,选Windows Server 2012 R2 数据中心64位中文版即可。
- 创建实例后先重置密码,再使用远程登录的方式访问服务器。
- 服务器开启后一般不需要关机,想关闭其窗口时,点击左下角Windows图标,再点右上角关机图标,选择“断开”即可。关机=服务器停止运行;断开=服务器仍在运行,只是用户看不见界面了。
搭建指南-具体操作篇
以4.8.0版本的qqtools为例,使用新版时自行调整部分设置。
-
根据使用手册,下载必要文件到本地,其路径避免使用中文及特殊字符。Java11的下载在第4步有详细说明;
qqtools的下载需要在打开源代码地址后找到Releases界面(https://github.com/duan602728596/qqtools/releases) ,此处qqtools-mirai-4.8.0-win64是解压后的文件夹。
-
mirai下载:
- 使用mirai,需要下载mirai-core-all-{version}-all.jar、mirai-console-{version}-all.jar、mirai-console-terminal-{version}-all.jar文件。下载地址:在maven下载。笔者选用了version 2.12.1 版本。
- mirai-api-http下载:
qqtools使用mirai-api-http插件,通过websocket接收消息。笔者选用了mirai-api-http-v2.5.2.mirai2版本。
下载地址:mirai-api-http下载。 - mcl-installer下载:
有关mirai的启动器,请访问链接查看详细说明。你也可以选择使用命令行启动mirai。下载地址:mcl-installer下载。笔者选用了mcl-installer-1.0.7-windows-amd64版本。 - mirai文件夹里的结构和文件:
-
将必要文件上传到服务器。步骤见链接
-
在服务器中安装Sublime Text。该文本编辑器用于后续修改配置(用记事本修改容易出错)。
-
安装Java11,配置Java环境变量
- 在open jdk 或者 oracle jdk(后者需账号注册)下载程序;
- 双击jdk-11.0.16_windows-x64_bin.exe,按指引完成安装即可;
- 给Path新增Java的安装路径对应的\bin路径,并且添加JAVA_HOME变量,其路径为Java的安装路径,步骤见链接。
- 打开cmd,输入
java
,出现一连串的指令提示,说明配置成功了:
- 在open jdk 或者 oracle jdk(后者需账号注册)下载程序;
-
进入mirai文件夹,双击运行mcl-installer-1.0.3-windows-amd64.exe. 1.0.3仅为示例版本,实际请以该项目地址提供的最新版为准,不要下载旧版,否则无法安装!
”Would you like to install Java?”:输入N,按回车;
”Would you like to download it?”:输入Y,按回车,等待下载完毕。 -
在mirai文件夹双击运行mcl.cmd,待运行完毕后关闭窗口。第一次运行会下载对应文件。
-
开启mirai-api-http的websocket。
qqtools是通过websocket接收消息的,所以需要mirai-api-http插件开启websocket。mirai启动后,会生成一个和plugins和content同级的config文件夹,进入config/net.mamoe.mirai-api-http文件夹,打开setting.yml文件,将enableWebsocket的值从false修改为true,然后重新启动mirai。根据下图修改代码,按Ctrl+S保存后关闭。setting.yml可以直接从参考链接处复制。使用空格进行缩进,同一层级需要严格对齐;记下verifyKey的值,后面会用到。
笔者自己的QQ机器人的设置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18adapters:
- http
- ws
debug: false
enableVerify: true
verifyKey: INITKEYOLRaYOuE
singleMode: false
cacheSize: 4096
enableWebsocket: true
adapterSettings:
http:
host: localhost
port: 18876
cors: [*]
ws:
host: localhost
port: 18876
reservedSyncId: -1 -
启动控制台登录账号,有以下方式(效果相同,推荐用2或者3):
- 手动登录:双击mcl.cmd,待初始化完成后输入login 账号 密码,按回车登录并保持运行。
- 自动登录:先进入\mirai\config\Console文件夹,右键单击AutoLogin.yml,选择通过Notepad++打开,填入用于播报监听信息的QQ账号和密码并保存;再双击mcl.cmd启动并保持运行。(以后就都能双击自动登录)
- qqtools登录:进入qqtools-mirai-4.8.0-win64文件夹,双击qqtool.exe,按下图提示完成配置。
登陆协议建议选手机或平板,手表不稳定
使用qqtools内置Console查看日志信息,和上下文所说的控制台信息效果是一样的,后面不赘述啦
- 手动登录:双击mcl.cmd,待初始化完成后输入login 账号 密码,按回车登录并保持运行。
-
无论哪种方式,首次登录都会出现滑动验证码和设备锁验证,最好在本地电脑的浏览器上进行,解决方法见《qqtools使用手册》(https://www.yuque.com/bbkkbkk/qqtools/aa20pr)。验证一次之后再装就不会出现验证问题了。
-
进入qqtools-mirai-4.8.0-win64文件夹双击qqtools.exe,点击“登陆配置”、“导入房间信息”,选择roomId.json文件。
-
导入房间信息成功后,点击“添加配置”,按需设置。
-
推荐在每个配置单底部添加一条格式相同的自定义命令,用于登陆配置后测试响应与数据返回情况,如此便无需等到成员发出房间消息,就能立刻得知机器人是否在正常运行。
-
以上设置完毕后点击“保存”;回到qqtools.exe的主界面,进入“账号登陆”,登陆对应的配置。
-
此时可以在群内发送步骤12中设置过的自定义命令来检查运行情况,从图看出控制台和群内消息都有对应数据,说明机器人运行正常。
至此,运载在云服务器上的口袋机器人已搭建完毕。 -
在与服务器断开连接(强调:不要点关机和重启)之前,请勿将鼠标光标停留于mcl.cmd窗口内(点一下桌面就能避免),否则会卡住消息,影响机器人工作。
日常维护
- 配置变更
修改已有配置后,在“账号登陆”中需要先退出原有配置,再登陆一次配置。 - 重启机器人
消息积累过多导致运行卡顿,或出现异常情况时,关闭两个窗口,再重启这mcl.cmd和qqtools.exe,重新登陆配置。
异常情况
-
风险管控
当控制台有输出监听数据,群内却没有消息播报时,说明机器人账号被腾讯风控了。
在服务器中同时用PC客户端登录该QQ(不会顶下线),一般挂一周就能正常运行了。平时可以多挂几个号备用。
附GG大佬关于风控的详细说明:
-
账号冻结/群消息功能暂停
- 群内无消息播报,且控制台连监听数据都没有,可能是账号被冻结了,用手机登录该账号,根据提示解冻后重启程序即可。
- 控制台报错Send message failed(如图):
如果用手机登录该账号,无解冻提示,也不能在机器人群发出消息,就换几个群发消息等弹出解冻提示并滑动解锁(如下图),或者直接换号重新配置(从具体操作篇的步骤8开始)。