next

suspend fun <E : Event> Event.next(id: String, key: Event.Key<E>): E

挂起并等待在具体的事件 Event 环境下根据条件获取下一个匹配的 事件.

通过 next 进行匹配的事件,会根据对应的事件类型结合当前的 Event 的类型进行匹配。

next 对事件类型进行的对应的匹配规则对照表如下:

当前事件类型目标事件同类型目标事件不同类型
Eventbot 的ID要相同不会出现不同类型
OrganizationEventorganization 的ID要相同放行
UserEventuser 的ID要相同放行
MessageEventsource 的ID要相同放行
ChatRoomMessageEventauthor 的ID要相同放行

如果你希望使用更复杂是匹配逻辑,请通过 waitingForNext 来自行编写逻辑。

超时处理

使用 withTimeout 或其衍生函数来进行超时控制。

val session: ContinuousSessionContext = ...

withTimeout(5.seconds) {
session {
next(id, FooEvent) { event -> // this: EventProcessingContext
// ...
true
}
}
}

你可能注意到了上述示例中出现了如下用法:

session {
next(id, FooEvent) { /* ... */}
}

这是通过扩展函数 ContinuousSessionContext.invoke 所提供的,旨在简化 next 这类函数的使用。

Receiver

当前所处的事件环境

See also

Parameters

id

持续会话监听函数的唯一标识

key

所需目标函数类型


suspend fun <E : Event> Event.next(key: Event.Key<E>): E

挂起并等待在具体的事件 Event 环境下根据条件获取下一个匹配的 事件.

通过 next 进行匹配的事件,会根据对应的事件类型结合当前的 Event 的类型进行匹配。

更多说明请参考 Event.next.

See also


suspend fun <E : Event> EventProcessingContext.next(id: String, key: Event.Key<E>): E
suspend fun <E : Event> EventProcessingContext.next(key: Event.Key<E>): E
suspend fun EventProcessingContext.next(id: String = randomIdStr()): Event

挂起并等待在当前的事件处理上下文 EventProcessingContext 中根据条件获取下一个匹配的 事件.

通过 next 进行匹配的事件,会根据对应的事件类型结合当前的 EventProcessingContext.event 的类型进行匹配。

更多说明参考 Event.next.

Receiver

当前的事件处理上下文环境

See also


suspend fun Event.next(id: String = randomIdStr()): Event

挂起并等待在具体的事件 Event 环境下根据条件获取下一个匹配的 事件.

通过 next 进行匹配的事件,会根据对应的事件类型结合当前的 Event 的类型进行匹配。

next 对事件类型进行的对应的匹配规则对照表如下:

当前事件类型目标事件同类型目标事件不同类型
OrganizationEventorganization 的ID要相同放行
UserEventuser 的ID要相同放行
MessageEventsource 的ID要相同放行
ChatRoomMessageEventauthor 的ID要相同放行

如果你希望使用更复杂是匹配逻辑,请通过 waitingForNext 来自行编写逻辑。

超时处理

使用 withTimeout 或其衍生函数来进行超时控制。

val session: ContinuousSessionContext = ...

withTimeout(5.seconds) {
session {
next { event -> // this: EventProcessingContext
// ...
true
}
}
}

你可能注意到了上述示例中出现了如下用法:

session {
next(id, FooEvent) { /* ... */}
}

这是通过扩展函数 ContinuousSessionContext.invoke 所提供的,旨在简化 next 这类函数的使用。

Receiver

当前所处的事件环境

See also

Parameters

id

持续会话监听函数的唯一标识