mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-27 20:50:09 +08:00
Add MessageChain.foreachContent(lambda)
and Message.hasContent()
This commit is contained in:
parent
d108de672c
commit
abe5db2023
@ -38,6 +38,7 @@ import kotlin.reflect.KProperty
|
|||||||
interface MessageChain : Message, MutableList<Message> {
|
interface MessageChain : Message, MutableList<Message> {
|
||||||
// region Message override
|
// region Message override
|
||||||
override operator fun contains(sub: String): Boolean
|
override operator fun contains(sub: String): Boolean
|
||||||
|
|
||||||
override fun followedBy(tail: Message): MessageChain
|
override fun followedBy(tail: Message): MessageChain
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
@ -67,6 +68,36 @@ interface MessageChain : Message, MutableList<Message> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 遍历每一个有内容的消息, 即 [At], [AtAll], [PlainText], [Image], [Face], [XMLMessage]
|
||||||
|
*/
|
||||||
|
inline fun MessageChain.foreachContent(block: (Message) -> Unit) {
|
||||||
|
this.forEachIndexed { index: Int, message: Message ->
|
||||||
|
if (message is At) {
|
||||||
|
if (index == 0 || this[index - 1] !is QuoteReply) {
|
||||||
|
block(message)
|
||||||
|
}
|
||||||
|
} else if (message.hasContent()) {
|
||||||
|
block(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断这个 [Message] 是否含有内容, 即是否为 [At], [AtAll], [PlainText], [Image], [Face], [XMLMessage]
|
||||||
|
*/
|
||||||
|
fun Message.hasContent(): Boolean {
|
||||||
|
return when (this) {
|
||||||
|
is At,
|
||||||
|
is AtAll,
|
||||||
|
is PlainText,
|
||||||
|
is Image,
|
||||||
|
is Face,
|
||||||
|
is XMLMessage -> true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提供一个类型的值. 若不存在则会抛出异常 [NoSuchElementException]
|
* 提供一个类型的值. 若不存在则会抛出异常 [NoSuchElementException]
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user