inSession
通过 EventProcessingContext 获取并进入 ContinuousSessionContext 的作用域中, 可以在存在 EventProcessingContext 时搭配使用:
suspend fun EventProcessingContext.onEvent(event: FooMessageEvent) {
inSession { // this: ContinuousSessionContext
event.reply("喵~")
val nextMessage = event.nextMessage(FooMessageEvent)
// ...
}
}
Content copied to clipboard
或
suspend fun onEvent(context: EventProcessingContext, event: FooMessageEvent) {
context.inSession { // this: ContinuousSessionContext
event.reply("喵~")
val nextMessage = event.nextMessage(FooMessageEvent)
// ...
}
}
Content copied to clipboard
超时
如果想要控制整个作用域下的整体超时时间,可以直接通过 withTimeout 来包裹作用域:
withTimeout(...) {
inSession { // this: ContinuousSessionContext
// ...
}
}
Content copied to clipboard
值传递
inSession 可以向外传递返回值:
val value: Int = inSession {
// ...
114
}
Content copied to clipboard