Interceptor
annotation class Interceptor(val value: String = "", val type: KClass<out AnnotatedEventListenerInterceptor> = AnnotatedEventListenerInterceptor::class, val priority: Int = PriorityConstant.NORMAL)(source)
配合 Listener 使用,为一个监听函数指定一个或多个注解型监听函数拦截器.
在 Interceptor 中使用的拦截器类型为 AnnotatedEventListenerInterceptor, 而不是普通的 love.forte.simbot.event.EventListenerInterceptor, 需要注意。
专属拦截器的整体优先级低于全局拦截器。有关流程拦截器、监听函数拦截器、专属监听函数拦截器、 监听函数过滤器、监听器 之间的整体流程顺序大致如下:
+ -------- +
| 流程拦截器 | EventProcessingInterceptor
+ ---+---- +
|
+ -----+----- +
| 监听函数拦截器 | EventListenerInterceptor
+ -----+----- +
|
+ -------+-------- +
| 注解型监听函数拦截器 | AnnotatedEventListenerInterceptor (当前:beforeFilter: true)
+ -------+-------- +
|
+------+----- +
| 监听函数过滤器 | EventFilter
+------+----- +
|
+ -------+-------- +
| 注解型监听函数拦截器 | AnnotatedEventListenerInterceptor (当前:beforeFilter: false)
+ -------+-------- +
|
+ --+-- +
| 监听器 | EventListener
+ ----- +
Content copied to clipboard
Interceptor 是可重复的。当使用的时候,目标函数上需要标记 Listener。
@Interceptor(...)
@Interceptor(...)
@Listener
suspend fun GroupEvent.myListener() { ... }
Content copied to clipboard