1
0
mirror of https://github.com/mamoe/mirai.git synced 2025-04-24 20:43:33 +08:00

add: CodableMessage

This commit is contained in:
cssxsh 2023-07-17 23:51:35 +08:00
parent 255965bfa7
commit 5da4e9ffdc
No known key found for this signature in database
GPG Key ID: 92849F91CA9D8ECE
4 changed files with 24 additions and 2 deletions
mirai-core-api/src/commonMain/kotlin/message

View File

@ -111,6 +111,9 @@ private object MiraiCodeParsers : AbstractMap<String, MiraiCodeParser>(), Map<St
"face" to MiraiCodeParser(Regex("""(\d*)""")) { (id) ->
Face(id.toInt())
},
"superface" to MiraiCodeParser(Regex("""(\d*),(.*),(\d*)""")) { (face, id, type) ->
SuperFace(face.toInt(), id, type.toInt())
},
"image" to MiraiCodeParser(Regex("""(.*)""")) { (id) ->
Image(id)
},

View File

@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Mamoe Technologies and contributors.
* Copyright 2019-2023 Mamoe Technologies and contributors.
*
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
@ -85,6 +85,7 @@ public interface MessageMetadata : SingleMessage {
* @see RichMessage 富文本
* @see ServiceMessage 服务消息, JSON/XML
* @see Face 原生表情
* @see SuperFace 超级表情
* @see ForwardMessage 合并转发
* @see Voice 语音
* @see MarketFace 商城表情

View File

@ -11,6 +11,8 @@ package net.mamoe.mirai.message.data
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import net.mamoe.mirai.message.code.CodableMessage
import net.mamoe.mirai.message.data.visitor.MessageVisitor
import net.mamoe.mirai.utils.MiraiExperimentalApi
import net.mamoe.mirai.utils.MiraiInternalApi
import net.mamoe.mirai.utils.NotStableForInheritance
@ -30,7 +32,7 @@ public data class SuperFace @MiraiInternalApi constructor(
public val face: Int,
public val id: String,
@MiraiInternalApi public val type: Int
) : HummerMessage {
) : HummerMessage, CodableMessage {
public companion object Key :
AbstractPolymorphicMessageKey<MessageContent, SuperFace>(
@ -94,6 +96,17 @@ public data class SuperFace @MiraiInternalApi constructor(
override fun toString(): String = contentToString()
override fun contentToString(): String = Face.names.getOrElse(face) { "[超级表情]" }
@MiraiExperimentalApi
@OptIn(MiraiInternalApi::class)
override fun appendMiraiCodeTo(builder: StringBuilder) {
builder.append("[mirai:superface:").append(face).append(',').append(id).append(',').append(type).append(']')
}
@MiraiInternalApi
override fun <D, R> accept(visitor: MessageVisitor<D, R>, data: D): R {
return visitor.visitSuperFace(this, data)
}
}
@JvmSynthetic

View File

@ -46,6 +46,7 @@ public interface MessageVisitor<in D, out R> {
public fun visitFlashImage(message: FlashImage, data: D): R
public fun visitPokeMessage(message: PokeMessage, data: D): R
public fun visitVipFace(message: VipFace, data: D): R
public fun visitSuperFace(message: SuperFace, data: D): R
// region MarketFace
public fun visitMarketFace(message: MarketFace, data: D): R
@ -180,6 +181,10 @@ public abstract class AbstractMessageVisitor<in D, out R> : MessageVisitor<D, R>
return visitHummerMessage(message, data)
}
override fun visitSuperFace(message: SuperFace, data: D): R {
return visitHummerMessage(message, data)
}
public override fun visitMarketFace(message: MarketFace, data: D): R {
return visitHummerMessage(message, data)
}