Linux部署Mirai

前言

你是否在群里见到过一呼必应的QQ群机器人,是否看到过能在群里跟群友交流的Bot。本文章结合最近博主在Linux上部署Mirai及ChatGPT的经历,为后人安装指北及坑点避免。

已失效
由于腾讯封杀原因,签名服务已经不稳定(本文方法),后续需要采用xposed方法等,并未更新


需要准备的东西

  • 一台Linux设备(我使用的是腾讯轻量云,系统为centos);
  • 本文文末提及的各种项目;
  • 一颗爱动脑筋的脑子。

部署Mirai

  1. 使用ssh工具(我使用的是FinalShell)登录至Linux服务器上。若是第一次登录,大概率需要在服务器提供商管理界面先更改密码,再使用新密码和提供的公网IP登录。

    登录成功

  2. mirai-console-loader安装器上下载合适的安装器版本到自己的Linux上(两种方法,一种为本地下载通过ssh上传、一种直接使用wget命令下载至Linux上)。

    • 本地下载:先进入release页面下载适合Linux版本的mcl(建议选用musl版本,具有完整依赖和库文件,不会出现gblic版本确实的情况),使用ssh工具将本地下载的文件上传至linux安装路径里。

      image-20230414171730389

      image-20230414172431035

      • 命令行下载:使用cd命令切换到安装路径后再使用wget命令下载文件(下载不动可尝试更换国内镜像源):
      1. mkdir /usr/local/mcl/
      2. cd /usr/local/mcl/
      3. wget https://github.com/iTXTech/mcl-installer/releases/download/v1.0.7/mcl-installer-1.0.7-linux-amd64-musl

        image-20230414175259252

  3. 使用./mcl-installer-1.0.7-linux-amd64-musl命令执行安装器一键安装。(mcl-installer-1.0.7-linux-amd64-musl为本目录下你上传的安装器的名字)途中先会询问你是否安装java(如果已经安装过可以选n不安装,没有就键入y),其余不清楚的内容一路回车至结束即可。

    ==提示权限不够先使用chmod +x mcl-installer-1.0.7-linux-amd64-musl赋予文件执行权限==

    image-20230414175742610

    image-20230414180324136

  4. 安装成功后出现Use "./mcl" to start MCL.表示安装成功,按下回车退出安装界面,刷新会看见目录下多了几个mcl文件。按照提示使用./mcl来第一次运行mirai加载一些依赖及库文件安装。

    image-20230414175956054

  5. 下载完成后按住Ctrl+C退出当前进程,寻找到plugins目录,这个是插件目录,后缀为mirai.jar或者mirai2.jar为插件,在插件目录下放置登录QQ机器人账号需要用到的插件fix-protocol-version,具体步骤参照步骤2,将其放置在目录中。

    image-20230415105509920

  6. 参照Aoki在手机上使用软件登录你的账号(如果出现235及238错误可以在真实QQ客户端登录后在安全设置变动几下登录保护什么的再尝试),将登录后的压缩包上传至linux解压到bots文件夹下(即bots下一个以QQ机器人QQ号命名的文件夹)。
  7. 重新回到上级目录cd /usr/local/mirai/,再次使用./mcl命令启动mirai-consol-loader。启动后出现 > ,此时还未登录机器人账号。可以使用命令/login <账号> <密码>登录机器人(如果按照以上配置部署好了插件及bots文件应该能顺利登录)。以下为常用命令:

    • 自动登录:/autoLogin add <account> <password> [passwordKind]
    • 更换登录协议: /autoLogin setConfig <qq号> protocol <登录协议>

      ==注意协议与你在手机上使用AOKI登录的协议一致==

      支持协议内容
      安卓手表ANDROID_WATCH
      安卓手机ANDROID_PHONE
      安卓padANDROID_PAD
      MACOSMACOS
  8. 此时QQ机器人以及正式部署完成,在控制台中你能看到bot收到以及发出的消息。我们需配合插件来使用bot实现功能。你可以在MiraiForum中寻找合适的插件。

插件安装

下载QChatGPT中下载mirai2.jar包,按照上节5步骤上传至plugins目录。由于mirai不支持热加载,所以每次需要使用Ctrl+C退出当前进程,然后再使用./mcl重新启动mirai,在启动时输入你注册后获取的chatGPT的api-key即可享用。

提示:

  • 插件的设置目录为config目录,可以在这里配置每个插件的设置内容;
  • 插件数据目录为data目录,一般不需要动。
  • 记得在配置文件console目录中添加管理员账号以及管理各种权限,可以安装chat-command插件在聊天环境中使用控制台命令进行权限管理等,权限管理命令见权限文档

image-20230415113501970

使用screen命令创建窗口

用 Windows 时,我们可以开几个命令窗口,一个运行 mirai,一个运行 Python;但是在 Linux 上,尤其是连接到远程服务器时,断开与服务器的连接,当前的终端会被关闭,里面运行的任务不能继续运行。

有什么办法,让一个终端可以“后台运行”呢?一个简单的办法是使用 screen 命令。

如果你的 Linux 发行版没有安装 screen,可以使用以下命令安装:

yum install screen

使用 screen -S <名字> 命令启动一个 screen。

screen -S mirai

每一个 screen 都是一个新的终端,这些终端由 screen 管理,可以随时放到后台。

在新的终端中,输入 ./mcl 运行 mirai-console,登录 QQ 账号。

mirai-console 运行成功后,按下 Ctrl+A Ctrl+D,将终端放到后台。

screen -r <名字> 命令重新连接到一个后台的终端。

screen -r mirai

同样,按下 Ctrl+A Ctrl+D 可以将终端再次放到后台。

使用 UTF-8 编码

如果 screen 导致了中文乱码,指定 screen 使用 UTF-8 编码(-U 参数)可能会解决问题:

screen -U -S mirai

使用 UTF-8 编码之后,每一条 screen 命令都要加上 -U 参数。

screen -U -r mirai

这样,需要的时候就连接到不同的 screen,从服务器断开连接的时候,就可以把 screen 放到后台运行。

其他碎碎念

其他窗口命令tmux:

  1. 新建控制台:tmux new -s <session-name>
  2. 移至后台:Ctrl+B+D
  3. 重新连接控制台:tmux attach -t <session-name>
  4. 杀死控制台:tmux kill-session -t <session-name>
  5. 列出所有会话:tmux ls

更详细的命令文档

使用mirai-api-http可以使mirai支持其他语言,相当于提供了一个外部接口。

需要更改config中mirai-api-http的配置为

adapters:
  - ws
debug: true
enableVerify: true
verifyKey: yirimirai
singleMode: false
cacheSize: 4096
adapterSettings:
  ws:
    host: localhost
    port: 8080
    reservedSyncId: -1

所以我们也可以使用其他插件,比如QchatGPT,此插件相比于上个插件需要配置YIri-mirai框架以及Python环境,以后再详述。

评论区
头像
文章目录