mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-09 01:09:19 +08:00
Fix length estimate for the case Quote + Image
This commit is contained in:
parent
997261fa3b
commit
993faee554
@ -12,10 +12,7 @@
|
||||
|
||||
package net.mamoe.mirai.qqandroid.utils
|
||||
|
||||
import net.mamoe.mirai.message.data.Image
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.PlainText
|
||||
import net.mamoe.mirai.message.data.QuoteReply
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import kotlin.jvm.JvmMultifileClass
|
||||
import kotlin.jvm.JvmName
|
||||
|
||||
@ -40,14 +37,21 @@ internal fun String.chineseLength(upTo: Int): Int {
|
||||
|
||||
internal fun MessageChain.estimateLength(upTo: Int = Int.MAX_VALUE): Int =
|
||||
sumUpTo(upTo) { it, up ->
|
||||
when (it) {
|
||||
is QuoteReply -> 700
|
||||
is Image -> 300
|
||||
is PlainText -> it.stringValue.chineseLength(up)
|
||||
else -> it.toString().chineseLength(up)
|
||||
}
|
||||
it.estimateLength(up)
|
||||
}
|
||||
|
||||
@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 PlainText -> stringValue.chineseLength(upTo)
|
||||
else -> this.toString().chineseLength(upTo)
|
||||
}
|
||||
}
|
||||
|
||||
internal inline fun <T> Iterable<T>.sumUpTo(upTo: Int, selector: (T, remaining: Int) -> Int): Int {
|
||||
var sum = 0
|
||||
for (element in this) {
|
||||
|
Loading…
Reference in New Issue
Block a user