Event

事件类型

所有 事件 的顶层接口。

Key

在事件处理的时候,将不会根据其 class 进行直接的类型关系判断来决定事件监听,而是根据 Event.key 进行事件之间的继承关系的判断。 对于任意一个继承此接口的事件类型(包括其他接口或抽象), 其类型中必须存在一个实现了 Event.Key 的伴生对象或者通过 EventKey 注解指定 Event.Key 的实现,否则此事件将会被视为 不可监听

泛型事件类型

所有能够监听的事件中,不建议监听带有泛型信息的事件类型(例如 ChangedEvent), 虽然它们允许被监听,但是它们大多数都代表对其他事件的类型约束。

并且,在进行事件监听的时候,事件类型的判断 不支持 泛型判断,因此如果你需要监听这些携带泛型的事件类型, 那么你必须使用kotlin中的 *,在Java中使用 ? 或直接忽略它。否则会很容易导致出现异常。

Author

ForteScarlet

See also

Types

Link copied to clipboard
interface Key<E : Event>

一个事件类型的Key。所有的计划对外的事件类型都必须通过 伴生对象 实现此类型并提供一个事件唯一的ID名称。 并非所有的事件接口 Event 的类型都能够允许被监听,有些事件类型可能仅用做标记或者由于其他原因无法/不允许被直接监听, 因此在事件调度中,需要通过 Key 来判断事件类型与其之间的继承关系。

Link copied to clipboard
object Root : Event.Key<Event>

所有事件的根类型。

Properties

Link copied to clipboard
abstract override val bot: Bot

与这个事件有关系的 Bot.

Link copied to clipboard
open override val component: Component

一个事件所属的组件。 通常与 bot 的组件所属一致。

Link copied to clipboard
abstract override val id: ID

事件的唯一标识。

Link copied to clipboard
abstract val key: Event.Key<out Event>

得到当前事件所对应的类型key。

Link copied to clipboard
abstract val timestamp: Timestamp

此时间发生的时间戳。

Inheritors

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Extensions

Link copied to clipboard
suspend fun Event.replyIfSupport(message: Message): MessageReceipt?
suspend fun Event.replyIfSupport(message: () -> Message): MessageReceipt?
suspend fun Event.replyIfSupport(message: String): MessageReceipt?

如果此事件允许回复消息,发送,否则得到null。

Link copied to clipboard

比较两个 IDContainerIDContainer.id 是否一致。