diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt index 35d312eda..cf8174059 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/convension.kt @@ -98,7 +98,7 @@ internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: B } when (it) { - is PlainText -> elements.add(ImMsgBody.Elem(text = ImMsgBody.Text(str = it.stringValue))) + is PlainText -> elements.add(ImMsgBody.Elem(text = ImMsgBody.Text(str = it.content))) is CustomMessage -> { @Suppress("UNCHECKED_CAST") elements.add( @@ -250,7 +250,7 @@ private fun MessageChain.cleanupRubbishMessageElements(): MessageChain { } if (last is VipFace && element is PlainText) { val l = last as VipFace - if (element.length == 4 + (l.count / 10) + l.kind.name.length) { + if (element.content.length == 4 + (l.count / 10) + l.kind.name.length) { last = element return@forEach } diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt index f1ce23a47..1385beb35 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt @@ -52,7 +52,7 @@ internal fun SingleMessage.estimateLength(upTo: Int): Int { return when (this) { is QuoteReply -> 444 + this.source.originalMessage.estimateLength(upTo) // Magic number is Image -> 260 // Magic number - is PlainText -> stringValue.chineseLength(upTo) + is PlainText -> content.chineseLength(upTo) is At -> display.chineseLength(upTo) is AtAll -> display.chineseLength(upTo) else -> this.toString().chineseLength(upTo) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt index a206d6a4f..0b8259c67 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt @@ -32,9 +32,7 @@ import kotlin.jvm.JvmSynthetic data class At @Suppress("DataClassPrivateConstructor") private constructor(val target: Long, val display: String) : - MessageContent, - CharSequence by display, - Comparable<String> by display { + MessageContent { /** * 构造一个 [At] 实例. 这是唯一的公开的构造方式. @@ -63,7 +61,7 @@ private constructor(val target: Long, val display: String) : // 自动为消息补充 " " override fun followedBy(tail: Message): MessageChain { - if (tail is PlainText && tail.stringValue.startsWith(' ')) { + if (tail is PlainText && tail.content.startsWith(' ')) { return super.followedBy(tail) } return super.followedBy(PlainText(" ")) + tail diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt index 6a127cc42..745a8394f 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt @@ -27,9 +27,7 @@ private const val displayA = "@全体成员" */ object AtAll : Message.Key<AtAll>, - MessageContent, - CharSequence by displayA, - Comparable<String> by displayA { + MessageContent { @SinceMirai("0.31.2") const val display = displayA @@ -49,7 +47,7 @@ object AtAll : // 自动为消息补充 " " override fun followedBy(tail: Message): MessageChain { - if (tail is PlainText && tail.stringValue.startsWith(' ')) { + if (tail is PlainText && tail.content.startsWith(' ')) { return super.followedBy(tail) } return super.followedBy(PlainText(" ")) + tail diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt index a43e02866..cc8bd62d9 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt @@ -21,8 +21,7 @@ import kotlin.jvm.JvmName data class Face @Suppress("DataClassPrivateConstructor") private constructor(val id: Int, private val stringValue: String) : // used in delegation - MessageContent, - CharSequence by stringValue, Comparable<String> by stringValue { + MessageContent { constructor(id: Int) : this(id, "[mirai:face:$id]") override fun toString(): String = stringValue 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 ca6059eec..b33d48118 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 @@ -279,7 +279,7 @@ interface Message { // must be interface. Don't consider any changes. @SinceMirai("0.39.3") fun Message.isContentEmpty(): Boolean = when (this) { is MessageMetadata -> true - is PlainText -> this.stringValue.isEmpty() + is PlainText -> this.content.isEmpty() is MessageChain -> this.all { it.isContentEmpty() } else -> false } @@ -339,6 +339,25 @@ interface SingleMessage : Message { DeprecationLevel.ERROR ) /* final */ override infix fun eq(other: String): Boolean = this.contentToString() == other + + + @PlannedRemoval("1.1.0") + @JvmSynthetic + @SinceMirai("1.0.0") + @Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) + fun length(): Int = this.toString().length + + @PlannedRemoval("1.1.0") + @JvmSynthetic + @SinceMirai("1.0.0") + @Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) + fun charAt(index: Int): Char = this.toString()[index] + + @PlannedRemoval("1.1.0") + @JvmSynthetic + @SinceMirai("1.0.0") + @Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN) + fun subSequence(start: Int, end: Int): CharSequence = this.toString().subSequence(start, end) } /** diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt b/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt index ec18faf00..2e2d8498d 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt +++ b/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt @@ -32,20 +32,6 @@ internal class TestConstrainSingleMessage : ConstrainSingle<TestConstrainSingleM override val key: Message.Key<TestConstrainSingleMessage> get() = Key - override val length: Int - get() = TODO("Not yet implemented") - - override fun get(index: Int): Char { - TODO("Not yet implemented") - } - - override fun subSequence(startIndex: Int, endIndex: Int): CharSequence { - TODO("Not yet implemented") - } - - override fun compareTo(other: String): Int { - TODO("Not yet implemented") - } } @OptIn(MiraiExperimentalAPI::class)