本文介绍如何使用 Mirai Console 的纯控制台前端,即 mirai-console-terminal
。本文部分内容实际上对所有前端都通用。
本文面向用户,若要开发 Mirai Console,可参考 Console 开发文档。
本文假设你使用 Windows 操作系统。但 Mirai Console 并不仅限于 Windows 平台使用,在其他操作系统上的使用方法应当是类似的。
可以使用脚本 自动安装 32 位带 HTTP 插件的版本,也可以使用安装器个性化安装:
- 访问 iTXTech/mcl-installer;
- 下载适合你的系统的可执行文件;
- 在一个新文件夹存放这个文件,运行它;
- 通常可以一路回车使用默认设置完成安装,安装完成后程序自动退出;
- 运行
mcl.cmd
启动,成功后会看到绿色的mirai-console started successfully
。
安装时自动下载了 Mirai Console 启动器(简称 MCL)。
启动器会帮你准备运行环境,下载和更新 Mirai 核心。你也可以使用启动器下载一些插件(见下文)。
第一次运行 mcl.cmd
时会初始化运行环境。下表说明了各个文件夹的用途。
MCL 只是启动器,没有机器人功能。MCL 支持从远程仓库下载插件,并启动 Mirai Console
终端版(mirai-console-terminal
)。
如果遇到启动器问题,请提交至 iTXTech/mirai-console-loader 。
文件夹名称 | 用途 |
---|---|
scripts |
存放启动器的脚本,一般不需要在意他们 |
plugins |
存放插件 |
data |
存放插件的数据,一般不需要在意它们 |
config |
存放插件的配置,可以打开并修改配置 |
logs |
存放运行时的日志,日志默认保留 7 天 |
可以在这里查看 MCL 详细用法
Mirai Console 原生支持 JAR 文件插件。一般插件的后缀为 .mirai2.jar
(新版本)或 .mirai.jar
(旧版本)。
将插件 JAR 放在 plugins
目录中,重启 MCL 就会自动扫描并加载。
Mirai Console
刚刚装好的 Mirai Console 没有功能,功能将由插件提供。
Mirai 官方提供两个插件:
- chat-command: 允许在聊天环境通过以 "/" 起始的消息执行指令(也可以配置前缀)
- mirai-api-http:提供 HTTP 支持,允许使用其他编程语言的插件
打开命令行 (Windows 系统在文件夹按住 Shift 单击鼠标右键,点击 "在此处打开 PowerShell"), 可以使用 MCL 自动安装这些插件,例如:
安装 mirai-api-http 的 2.x 版本:
./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel stable-v2
安装 chat-command:
./mcl --update-package net.mamoe:chat-command --type plugin --channel stable
注意:插件有多个频道,--channel stable
表示使用名为 stable
(稳定)的频道。不同的插件可能会设置不同的频道,
具体需要使用哪个频道可参考特定插件的说明 (很多插件会单独说明要如何安装它们, 因此不必过多考虑)。
详细文档:MCL/scripts
- Mirai 官方论坛 Mirai Forum
我们还正在建设插件中心,完成后将会简化寻找插件的工作
如果是 JAR 文件的插件,放入 plugins
即可。其他插件一般都有特殊说明如何使用,请参考它们的说明。
注意,mirai 在 2.11 时修改了加载策略。在这之后如果要从 MCL 安装插件
-
chat-command: 不安装此环境不能在聊天环境中执行命令
-
mirai-api-http:提供 HTTP 支持,允许使用其他编程语言的插件
-
LuckPerms-Mirai :高级权限组插件,适合权限分配模型比较复杂的情况
启动 mcl.cmd
就会看到控制台。在控制台可以输入指令,按回车执行这条指令。
Mirai Console 内置一些指令,输入 ?
并回车可以查看指令列表。
一些常用指令介绍在这里 。
要允许从 QQ 聊天环境中使用各种命令, 你 必须 完成以下的配置:
- 安装 chat-command
- 完成命令执行权限授予
关于不同的权限系统,授予权限的方式或者授予权限的命令格式可能有所不一样。
当使用非内置权限系统时,具体的权限管理相关命令以相关的权限系统的文档为准
如
LuckPerms-Mirai
插件的权限管理命令为/lp
而不是/permission
要完成权限授予,你必须通过在控制台执行
/permission permit [target] [permission]
来授予其他人执行相关命令的权限,需要执行的权限一般情况在插件的介绍页都会给明。
详见 PermissionCommand
。
Console 会自动根据语境推断指令参数的含义。
假设一条禁言指令:
/mute <target> <duration> # 为 target 设置 duration 秒的禁言
<target>
为目标群成员,<duration>
为禁言时间秒数。
若在群内发送消息执行指令 /mute 123 60
,123
将会被首先看作是群员 QQ 号码寻找群员。
若未找到,则会将 123
看作是群员的名片重新寻找。
群名片和昵称搜索是模糊匹配的,优先取用不会产生歧义的最相似的匹配。
例如 hello
能匹配 hella
,匹配率 80%;hello
匹配 hel
匹配率 60%。由于这两个匹配率都超过
60%,它们都会成为候选;由于它们之间相差超过 10%,Mirai 会认为这没有歧义,选用 hella
。
在一个群内也可以引用另一个群内的成员,使用 群号码.群员号码
格式。若没有 群号码
则会使用指令执行人所在的群。
在有多个机器人账号登录的情况下,可以使用 机器人号码.群员号码
的格式来指定某个机器人的群员。如果只有一个机器人则只需要使用 群员号码
。
在控制台执行指令时,需要提供群号码才能引用到群员。
下面将列举智能解析支持的格式列表。
格式 | 示例 | 说明 |
---|---|---|
机器人号码.好友号码 | 123456.987654 |
一个机器人的一个好友 |
好友号码 | 987654 |
当前唯一在线机器人的一个好友 |
~ |
~ |
仅聊天环境下,指代指令调用人自己作为好友 |
格式 | 示例 | 说明 |
---|---|---|
机器人号码.群号码.群员号码 | 123456.123456.987654 |
一个机器人的一个群中的一个群员 |
机器人号码.群号码.群员名片 | 123456.123456.Alice |
一个机器人的一个群中的一个群员 |
提及群员 | @Cinnamon |
一个机器人的一个群中的一个群员 |
机器人号码.群号码.$ | 123456.123456.$ |
一个机器人的一个群中的随机群员 |
群号码.群员号码 | 123456.987654 |
当前唯一在线机器人的一个群的一个群员 |
群号码.群员名片 | 123456.Alice |
当前唯一在线机器人的一个群的一个群员 |
群号码.$ | 123456.$ |
当前唯一在线机器人的一个群的随机群员 |
群员号码 | 987654 |
仅聊天环境下,当前群的一个群成员 |
群员名片 | Alice |
仅聊天环境下,当前群的一个群成员 |
$ |
$ |
仅聊天环境下,当前群的随机群成员 |
~ |
~ |
仅聊天环境下,指代指令调用人自己作为群员 |
格式 | 示例 | 说明 |
---|---|---|
机器人号码.群号码 | 123456.987654 |
一个机器人的一个群 |
群号码 | 987654 |
当前唯一在线机器人的一个群 |
~ |
~ |
仅聊天环境下,指代指令调用人自己作为好友 |
Mirai Console 支持一些自定义配置。各项配置可以在 config
目录中找到。
修改 AutoLogin.yml
可配置自动登录。也可以使用 /autologin
指令。
可以在 Command.yml
配置指令前缀,默认为 /
。注意,部分指令可不需要前缀也能使用,这取决于插件开发者的选择。
Mirai Console 会记录运行时的日志并保存到 logs
目录中,其中 latest.log
为最新日志。
可以参考日志文档了解如何配置日志的详略程度。
若要向插件开发者提交问题,建议将日志等级调整为 ALL
并复现问题后附加 latest.log
一并提交。
grantedPermissionMap.yml
包含权限授予信息。通常建议使用指令 /perm
来修改权限,而不建议直接修改配置。
repoLoc.yml
包含对远程仓库的配置,通常不需要修改,除非某个插件要求。
如果你认为本文档还需要覆盖一些内容,请在 issues 提交建议。