Fix length estimate for the case Quote + Image

This commit is contained in:
Him188 2020-04-02 16:16:09 +08:00
parent 997261fa3b
commit 993faee554

View File

@ -12,10 +12,7 @@
package net.mamoe.mirai.qqandroid.utils package net.mamoe.mirai.qqandroid.utils
import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.*
import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.message.data.PlainText
import net.mamoe.mirai.message.data.QuoteReply
import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmMultifileClass
import kotlin.jvm.JvmName import kotlin.jvm.JvmName
@ -40,11 +37,18 @@ internal fun String.chineseLength(upTo: Int): Int {
internal fun MessageChain.estimateLength(upTo: Int = Int.MAX_VALUE): Int = internal fun MessageChain.estimateLength(upTo: Int = Int.MAX_VALUE): Int =
sumUpTo(upTo) { it, up -> sumUpTo(upTo) { it, up ->
when (it) { it.estimateLength(up)
is QuoteReply -> 700 }
@OptIn(ExperimentalMessageSource::class)
internal fun SingleMessage.estimateLength(upTo: Int = Int.MAX_VALUE): Int {
return when (this) {
is QuoteReply -> {
700 + source.originalMessage.estimateLength(upTo)
}
is Image -> 300 is Image -> 300
is PlainText -> it.stringValue.chineseLength(up) is PlainText -> stringValue.chineseLength(upTo)
else -> it.toString().chineseLength(up) else -> this.toString().chineseLength(upTo)
} }
} }