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 667bc16b0..457f91cbd 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 @@ -14,6 +14,10 @@ inline class At(val target: Long) : Message { override fun toString(): String = "[@$target]" // TODO: 2019/11/25 使用群名称进行 at. 因为手机端只会显示这个文字 companion object Key : Message.Key + + override fun eq(other: Message): Boolean { + return other is At && other.target == this.target + } } /** 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 507ea34ee..8176aa510 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 @@ -9,6 +9,10 @@ inline class Face(val id: FaceId) : Message { override fun toString(): String = "[face${id.value}]" companion object Key : Message.Key + + override fun eq(other: Message): Boolean { + return other is Face && other.id == this.id + } } /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt index 453ac36b3..95dcdbdbb 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt @@ -19,6 +19,10 @@ inline class Image(inline val id: ImageId) : Message { override fun toString(): String = "[${id.value}]" companion object Key : Message.Key + + override fun eq(other: Message): Boolean { + return other is Image && other.id == this.id + } } inline val Image.idValue: String get() = id.value 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 767ef4db5..42a049cf5 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 @@ -97,6 +97,8 @@ interface Message { operator fun plus(another: Float): MessageChain = this.followedBy(another.toString().toMessage()) operator fun plus(another: Number): MessageChain = this.followedBy(another.toString().toMessage()) + + } /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt index 31f913bdc..2483420bc 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt @@ -41,6 +41,11 @@ interface MessageChain : Message, MutableList { */ operator fun get(key: Message.Key): M = first(key) + override fun eq(other: Message): Boolean { + if(other is MessageChain && other.size != this.size) + return false + return this.toString() == other.toString() + } } /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt index 72ae01ac0..c0ce69020 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt @@ -6,6 +6,13 @@ inline class PlainText(val stringValue: String) : Message { override fun toString(): String = stringValue companion object Key : Message.Key + + override fun eq(other: Message): Boolean { + if(other is MessageChain){ + return other eq this.toString() + } + return other is PlainText && other.stringValue == this.stringValue + } } /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/XML.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/XML.kt index 78b0ca2a1..65b6bece2 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/XML.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/XML.kt @@ -11,6 +11,10 @@ inline class XMLMessage(val stringValue: String) : Message, SingleOnly { override fun followedBy(tail: Message): Nothing = error("XMLMessage Message cannot be followed") override fun toString(): String = stringValue + + override fun eq(other: Message): Boolean { + return other is XMLMessage && other.stringValue == this.stringValue + } } /**