OneBotUnsupportedEvent

@FragileSimbotAPI
data class OneBotUnsupportedEvent(val sourceEventRaw: String?, val sourceEvent: OBSourceEvent) : OneBotEvent(source)

一个尚未被支持的事件类型。

OneBotUnknownEvent 不同的是, OneBotUnknownEvent 是一个原始事件类型明确的事件, 而 OneBotUnsupportedEvent 则不明确。 OneBotUnsupportedEvent 代表的是那些能够被解析为具体的事件类型, 只不过作为一个 simbot 组件,尚未提供对这种类型的针对性实现。

也因此,sourceEvent 的类型不会是 UnknownEvent

FragileSimbotAPI

OneBotUnsupportedEvent 被标记为 FragileSimbotAPI, 因为它是一种用于“兜底”的事件类型。 对于某个具体的事件,尚未提供对这种类型的针对性实现, 那么它便会被临时包装至 OneBotUnsupportedEvent 中。 而随着版本的推进与完善,曾经不被支持的具体事件可能会随后被支持, 而此时,再使用 OneBotUnsupportedEvent 将会永远无法接收到此事件。

举个例子,假设如下代码:

suspend fun processEvent(event: OneBotUnsupportedEvent) {
if (event.sourceEvent is FriendAddEvent) {
// 使用 '好友添加申请事件'
}
}

假设在某个版本 A 中,我们尚未提供对 FriendAddEvent 这个原始事件的包装体, 那么它便会出现在 OneBotUnsupportedEvent 中。为了处理这个事件, 就需要通过类型判断后直接使用原始的事件对象。

而日后,某个版本 B 更新,我们提供了一个针对此事件的包装体 OneBotFriendAddEvent, 那么自此以后,OneBotUnsupportedEvent 中将不会再出现 FriendAddEvent, 上述代码的 if 判断将始终为 false 而导致你的逻辑失效。 而这个过程不会有任何警告或错误,只可能会在更新日志中以新特性的形式提及。

Author

ForteScarlet

Constructors

Link copied to clipboard
constructor(sourceEventRaw: String?, sourceEvent: OBSourceEvent)

Properties

Link copied to clipboard
open override val id: ID

一个无意义的随机ID。

Link copied to clipboard
open override val sourceEvent: OBSourceEvent

来自事件JSON的反序列化数据体。

Link copied to clipboard
open override val sourceEventRaw: String?

如果能够支持,则获取来自事件JSON的原始字符串。 不支持、无法获取等情况下得到 null

Inherited properties

Link copied to clipboard
open val postType: String

事件类型

Link copied to clipboard
open val selfId: LongID

收到事件的机器人 QQ 号

Link copied to clipboard
open override val time: Timestamp

事件发生的时间戳