From e3add186fb6a54361f040892566a284bddd44352 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 25 Apr 2020 12:50:31 +0800 Subject: [PATCH] Add `Message.isContentNotEmpty` --- .../kotlin/net.mamoe.mirai/message/data/Message.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt index 9e4a533a7..d7dd4afea 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt @@ -266,13 +266,27 @@ interface Message { // must be interface. Don't consider any changes. this.followedByInternalForBinaryCompatibility(another.toString().toMessage()) } + +/** + * 判断消息内容是否为空. + * + * 以下情况视为 "空消息": + * + * - 是 [MessageMetadata] (因为 [MessageMetadata.contentToString] 都必须返回空字符串) + * - [PlainText] 长度为 0 + * - [MessageChain] 所有元素都满足 [isContentEmpty] + */ @SinceMirai("0.39.3") fun Message.isContentEmpty(): Boolean = when (this) { + is MessageMetadata -> true is PlainText -> this.isEmpty() is MessageChain -> this.any { it.isContentEmpty() } else -> false } +@SinceMirai("0.39.3") +inline fun Message.isContentNotEmpty(): Boolean = !this.isContentEmpty() + inline fun Message.isPlain(): Boolean = this is PlainText inline fun Message.isNotPlain(): Boolean = this !is PlainText