开源Android QQ协议库mirai使用教程(2020-08版本)

  1. 1. 前言
  2. 2. mirai 项目简介
    1. 2.1. mirai与mirai-console
  3. 3. 开始使用 mirai-console
    1. 3.1. 使用前的注意事项
    2. 3.2. 在 windows 上使用 mirai-console
      1. 3.2.1. 准备运行环境
      2. 3.2.2. 下载 mirai-console
      3. 3.2.3. 下载 mirai-core-qqandroid
      4. 3.2.4. 运行 mirai-console
    3. 3.3. 在 Linux 上使用 mirai-console
      1. 3.3.1. 准备运行环境
      2. 3.3.2. 下载 mirai-console 与 mirai-core
      3. 3.3.3. 运行 mirai-console
      4. 3.3.4. 让 mirai 在服务器中持续运行
  4. 4. 插件推荐:mirai-native 与 mirai-api-http

简单的入门教程, 适合无基础小白。因水平有限,本文内容可能会有错误,还请指正。

前言

其实之前已经写过一篇类似的mirai使用教程
但是mirai(以及相关作品)经过几个版本的迭代,已经有了较大的变化,旧文章中的许多内容已经不再适用,故有了这篇新的文章。

mirai 项目简介

mirai与mirai-console

  Mirai 是一个在全平台下运行, 提供 QQ Android 和 TIM PC 协议支持的高效率机器人框架(官方定义)。实际上因为一些原因, TIM PC 协议停止更新了。目前功能最齐全, 运行最稳定的是 QQ Android 协议。(mirai 项目地址: Github )

  Mirai 是由 Kotlin 语言编写的协议库, 提供使用 QQ Android 协议的一些 API。但是 mirai 本身不是一个 “QQ机器人” 程序, 而是一个库。与机器人软件/框架 (例如酷Q) 对应的应该是 mirai 官方的衍生项目 mirai-console。(mirai-console 项目地址: Github )

图 1 mirai-console 运行时截图(测试版)

  mirai-console 提供了插件系统, 支持安装 由 Java/Kotlin 编写的 mirai-console 插件。如果安装了 mirai-native 插件, 还可以支持酷Q的插件。由于酷Q插件相关的机制没有开放,因此无法直接加载cpk类型的插件, 需要将酷Q的插件重新编译为 dll 才能给 mirai-native 使用。( mirai-native 项目地址: Github )。安装 mirai-api-http 插件, 则可以使用基于 mirai-api-http 开发的插件。( mirai-api-http 项目地址: Github )

开始使用 mirai-console

使用前的注意事项

下面是使用之前必须阅读的声明(源自mirai的README.md):

一切开发旨在学习,请勿用于非法用途

  • mirai 是完全免费且开放源代码的软件,仅供学习和娱乐用途使用
  • mirai 不会通过任何方式强制收取费用,或对使用者提出物质条件
  • mirai 由整个开源社区维护,并不是属于某个个体的作品,所有贡献者都享有其作品的著作权。

Mirai 在各个平台均没有任何所谓官方交流群或论坛, 请不要轻信任何所谓学习, 交流群, 不造谣不传谣不信谣从我做起

如果你是开发者,你还需要了解 mirai 的开源协议。mirai 采用 AGPLv3协议开源。按照这个协议,任何与 mirai 有直接间接关系的程序,都应该采用相同的协议开源。比如,开发基于 mirai-console 的插件会直接引用 mirai 相关的库,因此这个插件需要采用 AGPLv3 协议开源。此外,开发基于 mirai-api-http 的插件会间接使用到 mirai,因此这个插件也需要采用 AGPLv3 协议开源

在 windows 上使用 mirai-console

准备运行环境

  运行 mirai-console 需要安装 Java 运行环境。安装 jre1.8 (或 jdk8) 以及更高版本都可以。(jre1.8 安装包下载地址: baidu ; jdk8安装包下载地址: baidu )

图 2 安装 Java 运行环境(jre)截图

  安装完成后, 重启计算机。打开 Powershell, 输入 java -version 或者 java --version 然后回车, 查看是否正确安装 Java。正确安装 Java 并执行上面的指令后, 其结果应该如 图 3 所示。

打开 Powershell 的方法: 同时按下键盘上的 Win 按键 (印着 windows 图标的按键) 和 字母 R 按键, 这会启动 “运行” 程序。输入 powershell 然后点击确定, 就可以打开 Powershell。

图 3 执行 java -version 截图

下载 mirai-console

mirai-console 包含两个部分:前端和后端。后端是 mirai-console 的核心部分,包含插件系统、指令系统、配置系统等。前端则是和后端进行交互的部分。比如在控制台中进行交互,可以使用 Pure 前端;需要图形界面的交互可以使用 Graphical 前端;Unix 终端界面可以使用 Terminal 前端。

mirai-console 前端和后端可以在 mirai-repo 中下载。

mirai-console 的后端位于 mirai-console 文件夹内。mirai-console 的 Pure 前端位于 mirai-console-pure 文件夹下。(图 4)

下载 mirai-core-qqandroid

mirai-core-qqandroid 位于 mirai-repo 的 mirai-core-qqandroid 文件夹下,它是 mirai 的核心组件,mirai-console 需要它才能正常工作。(图 4)

图 4 mirai-repo 的内容

运行 mirai-console

将 mirai-console 的前端、后端以及 mirai-core-qqandroid 共三个文件放在同一个目录下。在资源管理器的地址栏中输入 powershell.exe 然后回车, 这会在当前目录启动 Powershell。(如 图 5)

图 5 准备执行 mirai-console

  启动 Powershell 后, 输入以下指令并回车启动 mirai-console。(图 6)

1
java -cp ./* net.mamoe.mirai.console.pure.MiraiConsolePureLoader

图 6 mirai-console 运行时截图

在 Linux 上使用 mirai-console

以下内容在 WSL 中进行,以 Debian 10 为例。

准备运行环境

执行以下命令安装个 openjdk 就好了:

1
2
sudo apt-get update
sudo apt-get install default-jdk

下载 mirai-console 与 mirai-core

可以用 curl 或者 wget,也可以在windows系统下载好之后用 scp 指令传输到 Linux。

运行 mirai-console

执行以下指令启动 mirai-console。

1
java -cp ./* net.mamoe.mirai.console.pure.MiraiConsolePureLoader

如果出现 Error: Could not find or load main class 的错误,尝试以下解决方法:

首先找到 /usr/lib/jvm/java-XXX-openjdk-amd64/ 目录的路径

可以执行以下指令寻找:

1
whereis jvm

如图所示,在我的 Linux 上,该目录的路径是 /usr/lib/jvm/java-11-openjdk-amd64/

然后,根据你自己的情况,修改并执行以下指令,启动mirai。

1
java -cp /usr/lib/jvm/java-11-openjdk-amd64/lib:./* net.mamoe.mirai.console.pure.MiraiConsolePureLoader

让 mirai 在服务器中持续运行

断开 ssh 链接时,会把在会话期间运行的程序一起结束掉。要让 mirai-console 和其他插件在服务器中持续运行,推荐使用 screen 程序。

下面以启动 mirai-console 为例简单介绍 screen 的用法。

执行以下指令安装 screen:

1
sudo apt-get install screen

创建一个屏幕(SCREEN_NAME是屏幕的名称,可以改成合适的名字):

1
screen -S SCREEN_NAME

然后在新创建的屏幕启动 mirai-console。

要断开屏幕连接,先按下组合键 Ctrl+A 再按下字母 D。

之后再关闭终端,就不会把 mirai-console 结束掉了。

要重新连接之前的屏幕,执行以下指令:

1
screen -r SCREEN_NAME

如果忘记了有哪些屏幕,可以执行以下指令列出所有屏幕:

1
screen -ls

插件推荐:mirai-native 与 mirai-api-http

mirai-native 插件提供了和酷Q类似的插件API,如果有dll版本的酷Q插件,可以直接使用(cpk文件不行),该插件只能用于 windows,java x86 环境。

mirai-api-http 插件提供了一系列HTTP API,其他语言可以很方便地使用HTTP API使用mirai。现在已经有很多基于HTTP API的SDK,因此即使不擅长 kotlin/java 语言也可以开发 mirai 机器人。

// 未完待续…