most in Chinese, rest in English

0%

口袋48监听机器人

本文是作者记录和参考如何构建口袋48监听机器人,来实时检测小偶像口袋房间动态。基本备份自他人的文档。

基本准备

  1. 云服务器
    1. 平台选择:更推荐腾讯云,简言优点就是便宜、简洁、友好。
    2. 类型与配置选择:云服务器/轻量应用服务器均可,不缺钱可稍升配置到2核4G。一般来说轻量服务器足够用了。

搭建指南-创建服务器篇

  1. 在平台购买服务器时,地域选择离自己最近的城市,对镜像如无了解或其他需求,选Windows Server 2012 R2 数据中心64位中文版即可。
  2. 创建实例后先重置密码,再使用远程登录的方式访问服务器。
  3. 服务器开启后一般不需要关机,想关闭其窗口时,点击左下角Windows图标,再点右上角关机图标,选择“断开”即可。关机=服务器停止运行;断开=服务器仍在运行,只是用户看不见界面了。

搭建指南-具体操作篇

以4.8.0版本的qqtools为例,使用新版时自行调整部分设置。

  1. 根据使用手册,下载必要文件到本地,其路径避免使用中文及特殊字符。Java11的下载在第4步有详细说明;
    qqtools的下载需要在打开源代码地址后找到Releases界面(https://github.com/duan602728596/qqtools/releases) ,此处qqtools-mirai-4.8.0-win64是解压后的文件夹。
    1.jpeg

  2. mirai下载:

    1. 使用mirai,需要下载mirai-core-all-{version}-all.jar、mirai-console-{version}-all.jar、mirai-console-terminal-{version}-all.jar文件。下载地址:在maven下载。笔者选用了version 2.12.1 版本。
    2. mirai-api-http下载:
      qqtools使用mirai-api-http插件,通过websocket接收消息。笔者选用了mirai-api-http-v2.5.2.mirai2版本。
      下载地址:mirai-api-http下载
    3. mcl-installer下载:
      有关mirai的启动器,请访问链接查看详细说明。你也可以选择使用命令行启动mirai。下载地址:mcl-installer下载。笔者选用了mcl-installer-1.0.7-windows-amd64版本。
    4. mirai文件夹里的结构和文件:
      2.jpeg
  3. 将必要文件上传到服务器。步骤见链接

  4. 在服务器中安装Sublime Text。该文本编辑器用于后续修改配置(用记事本修改容易出错)。

  5. 安装Java11,配置Java环境变量

    1. open jdk 或者 oracle jdk(后者需账号注册)下载程序;
      3.jpeg
      4.jpeg
    2. 双击jdk-11.0.16_windows-x64_bin.exe,按指引完成安装即可;
      5.jpeg
    3. 给Path新增Java的安装路径对应的\bin路径,并且添加JAVA_HOME变量,其路径为Java的安装路径,步骤见链接
      27.png
      28.png
      29.png
      30.png
      31.png
    4. 打开cmd,输入java,出现一连串的指令提示,说明配置成功了:
      32.png
  6. 进入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,按回车,等待下载完毕。

  7. 在mirai文件夹双击运行mcl.cmd,待运行完毕后关闭窗口。第一次运行会下载对应文件。

  8. 开启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的值,后面会用到。
    6.jpeg
    笔者自己的QQ机器人的设置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    adapters: 
    - 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
  9. 启动控制台登录账号,有以下方式(效果相同,推荐用2或者3):

    1. 手动登录:双击mcl.cmd,待初始化完成后输入login 账号 密码,按回车登录并保持运行。
      7.jpeg
    2. 自动登录:先进入\mirai\config\Console文件夹,右键单击AutoLogin.yml,选择通过Notepad++打开,填入用于播报监听信息的QQ账号和密码并保存;再双击mcl.cmd启动并保持运行。(以后就都能双击自动登录)
      8.jpeg
      9.jpeg
    3. qqtools登录:进入qqtools-mirai-4.8.0-win64文件夹,双击qqtool.exe,按下图提示完成配置。
      10.jpeg
      10.jpeg
      10.jpeg
      登陆协议建议选手机或平板,手表不稳定
      10.jpeg
      使用qqtools内置Console查看日志信息,和上下文所说的控制台信息效果是一样的,后面不赘述啦
  10. 无论哪种方式,首次登录都会出现滑动验证码和设备锁验证,最好在本地电脑的浏览器上进行,解决方法见《qqtools使用手册》(https://www.yuque.com/bbkkbkk/qqtools/aa20pr)。验证一次之后再装就不会出现验证问题了。

  11. 进入qqtools-mirai-4.8.0-win64文件夹双击qqtools.exe,点击“登陆配置”、“导入房间信息”,选择roomId.json文件。
    14.jpeg
    15.jpeg

  12. 导入房间信息成功后,点击“添加配置”,按需设置。
    16.jpeg
    17.jpeg

  13. 推荐在每个配置单底部添加一条格式相同的自定义命令,用于登陆配置后测试响应与数据返回情况,如此便无需等到成员发出房间消息,就能立刻得知机器人是否在正常运行。
    18.jpeg
    19.jpeg

  14. 以上设置完毕后点击“保存”;回到qqtools.exe的主界面,进入“账号登陆”,登陆对应的配置。
    20.jpeg
    21.jpeg

  15. 此时可以在群内发送步骤12中设置过的自定义命令来检查运行情况,从图看出控制台和群内消息都有对应数据,说明机器人运行正常。
    22.jpeg
    23.jpeg
    至此,运载在云服务器上的口袋机器人已搭建完毕。

  16. 在与服务器断开连接(强调:不要点关机和重启)之前,请勿将鼠标光标停留于mcl.cmd窗口内(点一下桌面就能避免),否则会卡住消息,影响机器人工作。

日常维护

  1. 配置变更
    修改已有配置后,在“账号登陆”中需要先退出原有配置,再登陆一次配置。
  2. 重启机器人
    消息积累过多导致运行卡顿,或出现异常情况时,关闭两个窗口,再重启这mcl.cmd和qqtools.exe,重新登陆配置。

异常情况

  1. 风险管控
    当控制台有输出监听数据,群内却没有消息播报时,说明机器人账号被腾讯风控了。
    在服务器中同时用PC客户端登录该QQ(不会顶下线),一般挂一周就能正常运行了。平时可以多挂几个号备用。
    附GG大佬关于风控的详细说明:
    24.jpeg

  2. 账号冻结/群消息功能暂停

    1. 群内无消息播报,且控制台连监听数据都没有,可能是账号被冻结了,用手机登录该账号,根据提示解冻后重启程序即可。
    2. 控制台报错Send message failed(如图):
      25.jpeg
      如果用手机登录该账号,无解冻提示,也不能在机器人群发出消息,就换几个群发消息等弹出解冻提示并滑动解锁(如下图),或者直接换号重新配置(从具体操作篇的步骤8开始)。
      26.jpeg

参考文献

  1. 微博参考文献
  2. qqtools使用手册
  3. 如何创建口袋48成员房间机器人