Skip to content

Commit

Permalink
Add warnings about using GlobalEventChannel in Console plugins, close m…
Browse files Browse the repository at this point in the history
  • Loading branch information
Him188 committed May 19, 2022
1 parent eff9adf commit ace016f
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions docs/Events.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,34 +63,47 @@ GlobalEventChannel.parentScope(coroutineScope).subscribeAlways<GroupMessageEvent


// 如果不想限制生命周期,可获取 listener 处理
val listener: CompletableJob = GlobalEventChannel.subscribeAlways<GroupMessageEvent> { event -> }
val listener: CompletableJob =
GlobalEventChannel.subscribeAlways<GroupMessageEvent> { event -> }

listener.complete() // 停止监听
```

异常默认会被相关 `Bot` 日志记录。可以在 `subscribeAlways` 之前添加如下内容来处理异常。

```
.exceptionHandler { e -> e.printStackTrace() }
```

**注意**:如果要在 Mirai Console 插件中监听事件,请不要使用使用无作用域控制的 `GlobalEventChannel`
,如 `GlobalEventChannel.subscribeAlways`
。请使用插件主类的扩展函数 `globalEventChannel()`
或者 `GlobalEventChannel.parentScope(scope)` 等方式控制监听器协程作用域。

### Java

```java
// 创建监听
Listener listener = GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, event -> {
MessageChain chain = event.getMessage(); // 可获取到消息内容等, 详细查阅 `GroupMessageEvent`

event.getSubject().sendMessage("Hello!"); // 回复消息
})
Listener listener=GlobalEventChannel.INSTANCE.parentScope(scope).subscribeAlways(GroupMessageEvent.class,event->{
MessageChain chain=event.getMessage(); // 可获取到消息内容等, 详细查阅 `GroupMessageEvent`

listener.complete(); // 停止监听
event.getSubject().sendMessage("Hello!"); // 回复消息
})

listener.complete(); // 停止监听
```

异常默认会被相关 `Bot` 日志记录。可以在 `subscribeAlways` 之前添加如下内容来处理异常。

```java
.exceptionHandler(e -> e.printStackTrace())
.exceptionHandler(e->e.printStackTrace())
```

**注意**:如果要在 Mirai Console 插件中监听事件,请不要使用使用无作用域控制的 `GlobalEventChannel`
,如 `GlobalEventChannel.subscribeAlways`
。请使用 `GlobalEventChannel.parentScope(PluginMain.INSTANCE)`
等方式控制监听器协程作用域。

> 你已经了解了基本事件操作。现在你可以继续阅读通道处理和扩展等内容,或:
>
> - 跳到下一章 [Messages](Messages.md)
Expand Down

0 comments on commit ace016f

Please sign in to comment.