欢迎来到 mirai 文档.
本文档基于 mirai 1.0.0, 最后修改时间为 2020/5/22
mirai 项目整体由 核心 (mirai-core) 与 控制台(mirai-console) 组成.
mirai-core 是机器人服务支持库. 提供所有机器人相关 API. 本身只包含抽象类和接口, 使用时还需要同时依赖协议模块.mirai-core-qqandroid: Android QQ 8.3.0 版本协议实现.mirai-core 设计为一个 支持库, 意味着它可以被独立依赖, 在任意项目中使用. 详见下文.
mirai-serialization 依赖 mirai-core, 是 mirai-core 的序列化支持模块. 提供 Message 类型的序列化支持与相关 mirai 码 支持.
此模块自 mirai 1.1.0 起可用, 引用方法同 mirai-core.
@see mirai-login-solver-selenium/README.md
mirai-console 是基于 mirai-core 的, 支持插件加载, 指令系统, 和配置等的控制台框架.backend/mirai-console 为唯一的后端, 包含所有开发时需要用到的功能.frontend/mirai-console-purefrontend/mirai-console-graphicalfrontend/mirai-console-terminalMiraiAndroid 额外支持多种脚本 API注意: mirai-core 于 2020 年 5 月发布的 1.0.0 版本正式进入稳定更新阶段,
而 mirai-console 仍处于快速迭代阶段, 任何 API 都有可能在不经过警告的情况下改动, 任何 API 都不具有任何稳定性.
mirai-coremirai-core 仅包含抽象类和接口和一些扩展方法, 且拥有非常完整的 KDoc (源码内文档). 此处没有必要过多赘述.
你可以在这里快速地大致了解 mirai 的全部 API.
要能看懂下文, 建议至少学习 Java, Kotlin 或 C# 其中一门语言.
mirai 全部使用 Kotlin, 若你无法理解部分 API, 可先简略阅读 Kotlin 参考: kotlincn.net
有关协程 (suspend 修饰符)部分, mirai 做了大量的兼容性转换以让 Java 使用相同的 API 阻塞地调用一个协程函数。
对于 Kotlin 函数如 suspend fun sendMessage(msg: Message),
Kotlin 编译后生成 Java 方法 public Object sendMessage(Message msg, Continuation<Unit> cont)
Mirai 通过某种方式同时生成了桥梁方法 public void sendMessage(Message msg) 使得 Java 使用者可无缝接入。
建议在 IDE 内打开本文件 (位置 /docs/mirai.md), 可以进行源码内跳转.
'机器人' 和 '联系人'
总结: 机器人和联系人架构. 其中 CoroutineScope 为 Kotlin 协程作用域, Java 使用者可忽略.
'消息'
Message 分为 单个消息(SingleMessage) 和 多个消息, 即消息链(MessageChain ).'事件'
mirai 支持异步的事件系统.
net.mamoe.mirai.message 下, 并命名为 MessageEvent. 并为他们实现了一些扩展. 详见 MessageEvent.ktselect 语法的监听方式: selectMessagesthis 语境相同的事件 MessageEvent.nextMessage
一切准备就绪. 现在开始构造 Bot 实例:
Bot 的配置: BotConfiguration
可大致了解或跳过. 一般使用默认属性即可.Bot 实例: BotFactory, newBot另外地, 你还可以了解 mirai 提供的多平台日志系统 (为了同时支持控制台和独立依赖): MiraiLogger, 也可以跳过这个内容
使用 mirai 作为一个依赖库: 阅读 Quick Start 配置依赖.
使用 mirai 作为控制台框架: 使用 mirai-console 开发插件
在 1.0.0 及更新版本, mirai-core 通过 gradle 依赖的 api 方式暴露了如下依赖库:
kotlin-stdlib: Kotlin 标准库, 版本 1.4.0kotlin-reflect: Kotlin 反射, 版本 1.4.0kotlinx-coroutines-core: Kotlin 协程, 版本 1.3.9kotlinx-serialization-core: Kotlin 序列化运行时, 和 JSON 序列化, 版本 1.0.0-RC (此库不稳定, 请不要用新版本覆盖)kotlinx-serialization-protobuf: Kotlin ProtocolBuffers 序列化, 版本 1.0.0-RC (此库不稳定, 请不要用新版本覆盖)kotlinx-io: Kotlin IO, 版本至少为 0.1.16 (此库非常不稳定, 不建议使用它)kotlinx-coroutines-io: Kotlin 异步 IO, 版本至少为 0.1.16 (此库非常不稳定, 不建议使用它)kotlinx-atomicfu: Kotlin 原子操作, 版本至少为 0.14.4ktor-client-core, ktor-network, ktor-client-cio: Ktor HTTP, 版本至少为 1.3.2-1.4.0-rc在 JVM, mirai 使用 "org.bouncycastle:bcprov-jdk15on:1.64" 进行密匙计算.
mirai-core-qqandroidmirai-core 的实现部分. 不提供任何说明. 使用者无需考虑任何协议实现过程.
mirai-console控制台框架。此模块处于实验性阶段, 可能没有很好地文档支持, 详见 mirai-console