mirror of
https://github.com/mamoe/mirai.git
synced 2024-12-27 09:00:15 +08:00
Update docs
This commit is contained in:
parent
7b5cbfce5b
commit
e409f5506a
@ -3,6 +3,7 @@
|
||||
## 目录
|
||||
|
||||
- [事件系统](#事件系统)
|
||||
- [快速指导](#快速指导)
|
||||
- [事件通道](#事件通道)
|
||||
- [通道操作](#通道操作)
|
||||
- [过滤](#过滤)
|
||||
@ -33,6 +34,52 @@ Mirai 以事件驱动。
|
||||
|
||||
> 回到 [目录](#目录)
|
||||
|
||||
|
||||
## 快速指导
|
||||
|
||||
如果你了解事件且不希望详细阅读,可以立即仿照下面示例创建事件监听并跳过本章节。
|
||||
|
||||
Kotlin
|
||||
```kotlin
|
||||
// 事件监听器是协程任务。如果你有 CoroutineScope,可从 scope 继承生命周期管理和 coroutineContext
|
||||
GlobalEventChannel.parentScope(coroutineScope).subscribeAlways<GroupMessageEvent> { event ->
|
||||
// this: GroupMessageEvent
|
||||
// event: GroupMessageEvent
|
||||
subject.sendMessage("Hello!")
|
||||
}
|
||||
|
||||
// 如果不想限制生命周期,可获取 listener 处理
|
||||
val listener: CompletableJob = GlobalEventChannel.subscribeAlways<GroupMessageEvent> { event -> }
|
||||
|
||||
listener.complete() // 停止监听
|
||||
```
|
||||
|
||||
Java
|
||||
```java
|
||||
// 创建监听
|
||||
Listener listener = GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, event -> {
|
||||
event.getSubject().sendMessage("Hello!");
|
||||
})
|
||||
|
||||
listener.complete(); // 停止监听
|
||||
```
|
||||
|
||||
异常默认会被相关 Bot 日志记录。可以在 `subscribeAlways` 添加如下内容来处理异常。
|
||||
```
|
||||
// Kotlin
|
||||
.exceptionHandler { e -> e.printStackTrace() }
|
||||
|
||||
// Java
|
||||
.exceptionHandler(e -> e.printStackTrace())
|
||||
```
|
||||
|
||||
**`GlobalEventChannel` 会监听到来自所有 `Bot` 的事件,如果只希望监听某一个,请使用 `bot.eventChannel`。**
|
||||
|
||||
> 现在你可以继续阅读,或跳到下一章 [Messages](Messages.md)
|
||||
>
|
||||
> 回到 [目录](#目录)
|
||||
> [回到 Mirai 文档索引](README.md#mirai-core-api-文档)
|
||||
|
||||
## 事件通道
|
||||
|
||||
[`EventChannel`]: ../mirai-core-api/src/commonMain/kotlin/event/EventChannel.kt
|
||||
|
@ -135,20 +135,22 @@ contact.sendMessage(new PlainText("你要的图片是:").plus(Image.fromId("/f
|
||||
|
||||
可以使用如上表格所示的方法构造,或使用 DSL builder。
|
||||
```
|
||||
class MessageChainBuilder : MutableList<SingleMessage> {
|
||||
class MessageChainBuilder : MutableList<SingleMessage>, Appendable {
|
||||
operator fun Message.unaryPlus()
|
||||
operator fun String.unaryPlus()
|
||||
fun add(vararg messages: Message)
|
||||
}
|
||||
```
|
||||
|
||||
每个 `Message.unaryPlus` 都会被加入到结果消息链中。
|
||||
|
||||
```kotlin
|
||||
val chain = buildMessageChain {
|
||||
+PlainText("a")
|
||||
+AtAll
|
||||
+Image("/f8f1ab55-bf8e-4236-b55e-955848d7069f")
|
||||
+Image("/f8f1ab55-bf8e-4236-b55e-955848d7069f")
|
||||
add(At(123456))
|
||||
}
|
||||
|
||||
// chain 结果是包含 PlainText, AtAll, Image, At 的 MessageChain
|
||||
```
|
||||
|
||||
#### 在 Java 构造消息链
|
||||
@ -164,7 +166,8 @@ val chain = buildMessageChain {
|
||||
使用 `MessageChainBuilder`:
|
||||
```java
|
||||
MessageChain chain = new MessageChainBuilder()
|
||||
.append(new PlainText("a"))
|
||||
.append(new PlainText("string"))
|
||||
.append("string") // 会被构造成 PlainText 再添加, 相当于上一行
|
||||
.append(AtAll.INSTANCE)
|
||||
.append(Image.fromId("/f8f1ab55-bf8e-4236-b55e-955848d7069f"))
|
||||
.build();
|
||||
|
Loading…
Reference in New Issue
Block a user