Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update docs #2639

Merged
merged 25 commits into from
May 6, 2023
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/.conf/nav.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
* Copyright 2019-2023 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
Expand All @@ -18,6 +18,7 @@ module.exports = {
{text: '用户手册 - 控制台', link: '/ConsoleTerminal.html'},
{text: 'JVM 环境和开发准备工作', link: '/Preparations.html'},
{text: "配置项目", link: "/ConfiguringProjects.html"},
{text: "常见问题", link: "/Questions.html"},
{
text: "CoreAPI", items: [
{text: "CoreAPI", link: "/CoreAPI.html"},
Expand Down
35 changes: 24 additions & 11 deletions docs/Bots.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ interface BotFactory {
fun newBot(qq: Long, password: String): Bot
fun newBot(qq: Long, passwordMd5: ByteArray, configuration: BotConfiguration): Bot
fun newBot(qq: Long, passwordMd5: ByteArray): Bot
// 在 2.15.0 中加入
fun newBot(qq: Long, authorization: BotAuthorization)
fun newBot(qq: Long, authorization: BotAuthorization, configuration: BotConfiguration)

companion object : BotFactory by BotFactoryImpl
}
Expand All @@ -59,12 +62,20 @@ val bot = BotFactory.newBot(qq, password) {
// 配置,例如:
fileBasedDeviceInfo()
}
// 在 2.15.0 中加入
val bot = BotFactory.newBot(qq, BotAuthorization.byQRCode()) {
protocol = BotConfiguration.MiraiProtocol.ANDROID_WATCH
}

// Java
Bot bot = BotFactory.INSTANCE.newBot(qq, password, new BotConfiguration() {{
// 配置,例如:
fileBasedDeviceInfo()
}})
}});
// 在 2.15.0 中加入
Bot bot = BotFactory.INSTANCE.newBot(qq, BotAuthorization.byQRCode(), configuration -> {
configuration.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_WATCH);
});
```

下文示例代码都要放入 `// 配置` 中。
Expand Down Expand Up @@ -176,7 +187,8 @@ deviceInfo = { bot -> /* create device info */ }
setDeviceInfo(bot -> /* create device info */)
```

在线生成自定义设备信息的 `device.json`: https://ryoii.github.io/mirai-devicejs-generator/
在线生成自定义设备信息的 `device.json`: https://ryoii.github.io/mirai-devicejs-generator/
更加仿真的设备信息的 `device.json`: https://github.com/cssxsh/mirai-device-generator

#### 使用其他日志库接管 mirai 日志系统
*mirai 2.7 起支持*
Expand Down Expand Up @@ -255,25 +267,26 @@ contactListCache.setSaveIntervalMillis(60000) // 可选设置有更新时的保

### 处理滑动验证码

[project-mirai/mirai-login-solver-selenium]: https://github.com/project-mirai/mirai-login-solver-selenium
[mirai-login-solver-sakura]: https://github.com/KasukuSakura/mirai-login-solver-sakura

服务器正在大力推广滑块验证码。

部分账号可以跳过滑块验证码,Mirai 会自动尝试。
若你的账号无法跳过验证,可在 [project-mirai/mirai-login-solver-selenium] 查看处理方案
若你的账号无法跳过验证,可尝试使用 [mirai-login-solver-sakura] 处理

**若遇到滑块验证问题无法解决,可以参考[论坛帮助页面](https://mirai.mamoe.net/topic/223/%E6%97%A0%E6%B3%95%E7%99%BB%E5%BD%95%E7%9A%84%E4%B8%B4%E6%97%B6%E5%A4%84%E7%90%86%E6%96%B9%E6%A1%88)。**
**若遇到滑块验证问题无法解决,可以参考[论坛帮助页面](https://mirai.mamoe.net/topic/223)。**

### 常见登录失败原因

[#993]: https://github.com/mamoe/mirai/discussions/993

| 错误信息 | 可能的原因 | 可能的解决方案 |
|:--------------|:---------------|:-----------------------------------------------------------|
| 当前版本过低 | 密码错误 | 检查密码或修改密码到 16 位以内 |
| 当前上网环境异常 | 设备锁 | 开启或关闭设备锁 (登录保护) |
| 禁止登录 | 需要处理滑块验证码 | [project-mirai/mirai-login-solver-selenium] |
| 密码错误 | 密码错误或过长 | 手机协议最大支持 16 位密码 ([#993]). 在官方 PC 客户端登录后修改密码 |
| 错误信息 | 可能的原因 | 可能的解决方案 |
|:-----------|:---------------------|:--------------------------------------------|
| 密码错误 | 密码错误或过长 | 手机协议最大支持 16 位密码 ([#993]). 在官方 PC 客户端登录后修改密码 |
| `code=45` | 协议版本过低或设备信息被拉黑 | 删除 device.json, 让其重新生成 |
| `code=235` | 协议版本过低或设备信息被拉黑 | 删除 device.json, 让其重新生成 |
| `code=237` | 滑块验证处理过慢或者提交ticket有误 | 尝试使用 [mirai-login-solver-sakura] 处理滑块验证 |
| `code=238` | 当前协议已禁止密码登录 | 使用扫码登录 |

若以上方案无法解决问题,请尝试 [切换登录协议](#切换登录协议) 和 **[处理滑动验证码](#处理滑动验证码)**。

Expand Down
59 changes: 36 additions & 23 deletions docs/ConsoleTerminal.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ Console,可参考 [Console 开发文档](../mirai-console/docs/README.md)。
本文假设你使用 Windows 操作系统。但 Mirai Console 并不仅限于 Windows
平台使用,在其他操作系统上的使用方法应当是类似的。

请注意,关闭 Mirai Console 请使用 `stop` 指令关闭
不要直接右上角关闭窗口。

安装
----

可以使用[脚本](https://mirai.mamoe.net/assets/uploads/files/1618372079496-install-20210412.cmd)
可以使用 [脚本](https://mirai.mamoe.net/assets/uploads/files/1618372079496-install-20210412.cmd)
自动安装 32 位带 HTTP 插件的版本,也可以使用安装器个性化安装:

[iTXTech/mcl-installer]: https://github.com/iTXTech/mcl-installer/releases
Expand Down Expand Up @@ -40,13 +43,16 @@ MCL 只是启动器,没有机器人功能。MCL 支持从远程仓库下载插
如果遇到启动器问题,请提交至 [iTXTech/mirai-console-loader](https://github.com/iTXTech/mirai-console-loader)

| 文件夹名称 | 用途 |
|:---------:|:--------------------|
| `scripts` | 存放启动器的脚本,一般不需要在意他们 |
| `plugins` | 存放插件 |
| `data` | 存放插件的数据,一般不需要在意它们 |
| `config` | 存放插件的配置,可以打开并修改配置 |
| `logs` | 存放运行时的日志,日志默认保留 7 天 |
| 文件夹名称 | 用途 |
|:-------------------------:|:---------------------|
| `data` | 存放插件的数据,一般不需要在意它们 |
| `config` | 存放插件的配置,可以打开并修改配置 |
| `logs` | 存放运行时的日志,日志默认保留 7 天 |
| `libs` | 存放 mirai-core 等核心库文件 |
| `plugins` | 存放插件 |
| `plugin-libraries` | 存放插件的库缓存 |
| `plugin-shared-libraries` | 存放插件的公共库 |
| `modules` | 存放启动器的拓展模块 |

> 可以在[这里](https://github.com/iTXTech/mirai-console-loader)查看 MCL 详细用法

Expand All @@ -57,7 +63,7 @@ MCL 只是启动器,没有机器人功能。MCL 支持从远程仓库下载插
Mirai Console 原生支持 JAR 文件插件。一般插件的后缀为 `.mirai2.jar`(新版本)或 `.mirai.jar`
(旧版本)。

将插件 JAR 放在 `plugins` 目录中,重启 MCL 就会自动扫描并加载。
将插件 JAR 放在 `plugins` 目录中,重启 Mirai Console 就会自动扫描并加载。

Mirai Console

Expand All @@ -83,19 +89,19 @@ Mirai 官方提供两个插件:
安装 mirai-api-http 的 2.x 版本:

```powershell
./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel stable-v2
./mcl --update-package net.mamoe:mirai-api-http --type plugin --channel maven-stable
```

安装 chat-command:

```powershell
./mcl --update-package net.mamoe:chat-command --type plugin --channel stable
./mcl --update-package net.mamoe:chat-command --type plugin --channel maven-stable
```

注意:插件有多个频道,`--channel stable` 表示使用名为 `stable`(稳定)的频道。不同的插件可能会设置不同的频道,
注意:插件有多个频道,`--channel maven-stable` 表示使用从 `maven` 更新的 `stable`(稳定)的频道。不同的插件可能会设置不同的频道,
具体需要使用哪个频道可参考特定插件的说明 (很多插件会单独说明要如何安装它们, 因此不必过多考虑)。

详细文档:[MCL/scripts](https://github.com/iTXTech/mirai-console-loader/blob/master/cli.md)
详细文档:[MCL 命令行参数](https://github.com/iTXTech/mirai-console-loader/blob/master/cli.md)

### 在哪找社区插件

Expand All @@ -108,17 +114,24 @@ Mirai 官方提供两个插件:

如果是 JAR 文件的插件,放入 `plugins` 即可。其他插件一般都有特殊说明如何使用,请参考它们的说明。

注意,mirai 在 2.11 时修改了加载策略。在这之后如果要从 MCL 安装插件
注意,mirai 在 2.11 时修改了加载策略。请尽量使用 `mirai2.jar` 后缀版本的插件

### 推荐安装的插件
### 常用的插件

- [chat-command](https://github.com/project-mirai/chat-command):
不安装此环境不能在聊天环境中执行命令
- [mirai-api-http](https://github.com/project-mirai/mirai-api-http):提供
HTTP 支持,允许使用其他编程语言的插件
不安装此插件不能在聊天环境中执行命令

- [mirai-api-http](https://github.com/project-mirai/mirai-api-http):
提供 HTTP 支持,允许使用其他编程语言的插件

- [mirai-silk-converter](https://github.com/project-mirai/mirai-silk-converter):
可以自动将 `wav`, `mp3` 等格式转换为语音所需格式 `silk`

- [LuckPerms-Mirai](https://github.com/Karlatemp/LuckPerms-Mirai):
高级权限组插件,适合权限分配模型比较复杂的情况,并且可以提供网页UI的权限编辑器 (指令 `lp editor`)

- [LuckPerms-Mirai](https://github.com/Karlatemp/LuckPerms-Mirai)
:高级权限组插件,适合权限分配模型比较复杂的情况
- [mirai-login-solver-sakura](https://github.com/KasukuSakura/mirai-login-solver-sakura):
验证处理工具,主要是为了优化和方便处理各种验证码

使用控制台指令
-----
Expand All @@ -130,7 +143,7 @@ Mirai Console 内置一些指令,输入 `?` 并回车可以查看指令列表
一些常用指令介绍在[这里](/mirai-console/docs/BuiltInCommands.md#mirai-console---builtin-commands)

### 在群聊中使用命令 (权限授予)
### 在聊天框中使用命令 (权限授予)

要允许从 QQ 聊天环境中使用各种命令, 你 **必须** 完成以下的配置:

Expand Down Expand Up @@ -223,11 +236,11 @@ Mirai Console 支持一些自定义配置。各项配置可以在 `config` 目

### 管理日志

Mirai Console 会记录运行时的日志并保存到 `logs` 目录中,其中 `latest.log` 为最新日志
Mirai Console 会记录运行时的日志并保存到 `logs` 目录中。

可以参考[日志文档](../mirai-console/docs/Logging.md)了解如何配置日志的详略程度。

若要向插件开发者提交问题,建议将日志等级调整为 `ALL` 并复现问题后附加 `latest.log` 一并提交
若要向插件开发者提交问题,建议将日志等级调整为 `ALL` 并复现问题后将当天日志一并提交

### 配置权限

Expand Down
11 changes: 10 additions & 1 deletion docs/EventList.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@
- 好友消息: FriendMessagePreSendEvent
- 群临时会话消息: GroupTempMessagePreSendEvent
- 陌生人消息:StrangerMessagePreSendEvent
- 其他客户端消息:OtherClientMessagePreSendEvent
- 从其他客户端同步消息 MessageSyncEvent
- 群消息: GroupMessageSyncEvent
- 好友消息: FriendMessageSyncEvent
- 群临时会话消息: GroupTempMessageSyncEvent
- 陌生人消息: StrangerMessageSyncEvent
- 主动发送消息后: MessagePostSendEvent
- 群消息: GroupMessagePostSendEvent
- 好友消息: FriendMessagePostSendEvent
Expand Down Expand Up @@ -86,6 +90,7 @@
##### 名片和头衔
- 成员群名片改动: MemberCardChangeEvent
- 成员群特殊头衔改动: MemberSpecialTitleChangeEvent
- 成员群荣誉改变: MemberHonorChangeEvent

##### 成员权限
- 成员权限改变: MemberPermissionChangeEvent
Expand All @@ -102,3 +107,7 @@
- 好友头像改变: FriendAvatarChangedEvent
- 好友昵称改变: FriendNickChangedEvent
- 好友输入状态改变: FriendInputStatusChangedEvent

### 控制台
- 自动登录执行后: StartupEvent [2.15.0, +∞)
- 控制台启动完成: AutoLoginEvent [2.15.0, +∞)
5 changes: 2 additions & 3 deletions docs/Preparations.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@

## JVM 环境要求

- 桌面 JVM:最低 Java 8,但推荐 Java 11(要使用一键启动器,需要 11)
- 桌面 JVM:最低 Java 8,但推荐 Java 17(要使用一键启动器,需要 11+
- Android:Android SDK 26+ (Android 8.0,Oreo)

目前主要使用的自动启动器,[Mirai Console Loader](https://github.com/iTXTech/mirai-console-loader)
,(MCL) 默认安装 JRE 17。但旧版本 MCL 会默认安装 JRE 11。因此 Mirai Console 插件使用 JDK 11
是较合适的。
,(MCL) 默认安装 JRE 17。

**但注意不要使用 Oracle JDK**
([原因](https://github.com/mamoe/mirai/discussions/779)),可以使用其他任何 JDK。
Expand Down
82 changes: 82 additions & 0 deletions docs/Questions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Mirai - Questions

## 用户常见问题

> 'java' 不是内部或外部命令,也不是可运行的程序

没有安装 `java`

> `Failed to fetch announcement for ...`

MCL查询更新信息失败,你可以尝试编辑 `config.json` 更换 [`mirai_repo`](https://github.com/project-mirai/mirai-repo-mirror#%E4%BB%93%E5%BA%93%E9%95%9C%E5%83%8F)

> Login failed: Error(bot=..., code=..., title=....

这些是服务器返回的信息,它表示你的 `BOT` 账号被登录风控了
风控没有100%稳定的解决方法,你可以关注 [论坛公告帖 - 无法登录的临时处理方案](https://mirai.mamoe.net/topic/223)
另外,密码登录中是否出现`滑块验证`或`短信验证`都是不可控的,这取决于腾讯的服务器要求你完成什么验证,没有办法自由选择。

> 登录协议如何修改

对于手动密码登录,第三个参数就是协议, 例如 `login 12345 114514 MACOS`

对于自动密码登录,你可以使用指令修改,例如 `autoLogin setConfig 12345 protocol MACOS`
也可以在 `Mirai Console` 关闭的情况下, 编辑 `config/Console/AutoLogin.yml` 文件
注意,文件中有一个账号为 `12345` 的示例,请注意确认修改的配置对应的账号,不要修改错了示例

> 聊天框无法使用指令(使用指令后没效果)

1. 确认机器人收到消息
日志里会有消息记录,没有就是没收到,如果是群聊消息,注意是否已 `收入群助手`,这可能会导致收不到消息

2. 确认是否已经安装 [chat-command](https://github.com/project-mirai/chat-command/releases/download/v0.6.0/chat-command-0.6.0.mirai2.jar)
如果插件的指令是对接的 `Mirai Console` 的指令接口,那它就需要 `chat-command`

3. 确认是否已经授权给目标用户
默认情况下所有用户都是没有权限的,聊天框下无法使用指令

4. 确认日志中没有相关报错
如果插件指令执行出错,也有可能无法提供回复,请联系插件作者

> 如何确认 `Mirai 版本` 或 `插件版本` 等信息

可以启动 MCL 的情况下:
用指令 `/status`

无法启动的情况下:
`Mirai Console` 的组件在 `libs` 文件夹下, 文件名包含 `版本信息`

> 找不到 `http api` 的相关配置文件

你可能需要安装插件 https://github.com/project-mirai/mirai-api-http

> 如何添加 jvm 参数,例如 `-Dmirai.no-desktop=true`

编辑启动脚本 `mcl.cmd`, 在 `-jar` 前面加上 `-D...`
例如 `-Dmirai.no-desktop=true -jar mcl...`
`Linux/MacOS` 的启动脚本是 `mcl` (没有后缀的那个文件)

## 开发者常见问题

> 如何自定义登录验证处理

[覆盖登录解决器](https://github.com/mamoe/mirai/blob/dev/docs/Bots.md#%E8%A6%86%E7%9B%96%E7%99%BB%E5%BD%95%E8%A7%A3%E5%86%B3%E5%99%A8)

> IDEA 下 `import` 爆红,mirai 相关依赖全部无法解析

IDEA 太旧了,没法解析新版 kotlin, 最好升级到最新版

> 有些事件收到不到

`SignEvent` 或者 `NudgeEvent`
总的来说 `MACOS` 和 `ANDROID_WATCH` 相对其他协议会缺少一些事件的接收
对于这些协议来说是不会收到的,因为这在他们对应官方客户端版本里本来就没有这些功能

`GroupMessageEvent`
群事件收不到可能是因为你将群设置为`屏蔽群`或者`收入了群助手`

另外如果消息是 `转发消息` 或 `卡片消息` 等特殊消息, 也有可能因为风控无法接收和发出

> 发送语音之后播放没有声音

你可能需要 安装插件/引入依赖 https://github.com/project-mirai/mirai-silk-converter
Loading