mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-06 09:00:14 +08:00
[Review] MiraiCode and message serialization:
- Add extensions for Kotlin callers
This commit is contained in:
parent
ad6e951be8
commit
938cc6dd07
@ -7,7 +7,7 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("unused")
|
||||
@file:Suppress("unused", "NOTHING_TO_INLINE")
|
||||
|
||||
package net.mamoe.mirai.message.code
|
||||
|
||||
@ -15,6 +15,7 @@ import net.mamoe.mirai.contact.Contact
|
||||
import net.mamoe.mirai.message.code.internal.parseMiraiCodeImpl
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.MessageChain.Companion.parseFromMiraiCode
|
||||
import net.mamoe.mirai.utils.safeCast
|
||||
|
||||
/**
|
||||
@ -22,11 +23,20 @@ import net.mamoe.mirai.utils.safeCast
|
||||
*/
|
||||
public object MiraiCode {
|
||||
/**
|
||||
* 解析形如 "[mirai:]" 的 mirai 码, 即 [Message.toString] 返回的内容.
|
||||
* 解析形如 "[mirai:]" 的 mirai 码, 即 [CodableMessage.toMiraiCode] 返回的内容.
|
||||
* @see MessageChain.parseFromMiraiCode
|
||||
*/
|
||||
@JvmName("parseMiraiCode1")
|
||||
@JvmSynthetic
|
||||
public inline fun String.parseMiraiCode(contact: Contact? = null): MessageChain = parseMiraiCode(this, contact)
|
||||
|
||||
/**
|
||||
* 解析形如 "[mirai:]" 的 mirai 码, 即 [CodableMessage.toMiraiCode] 返回的内容.
|
||||
* @see MessageChain.parseFromMiraiCode
|
||||
*/
|
||||
@JvmOverloads
|
||||
@JvmStatic
|
||||
public fun String.parseMiraiCode(contact: Contact? = null): MessageChain = parseMiraiCodeImpl(contact)
|
||||
public fun parseMiraiCode(code: String, contact: Contact? = null): MessageChain = code.parseMiraiCodeImpl(contact)
|
||||
|
||||
/**
|
||||
* 转换得到 mirai 码.
|
||||
|
@ -21,10 +21,12 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.Json
|
||||
import net.mamoe.mirai.contact.Contact
|
||||
import net.mamoe.mirai.event.events.MessageEvent
|
||||
import net.mamoe.mirai.message.MessageSerializers
|
||||
import net.mamoe.mirai.message.code.CodableMessage
|
||||
import net.mamoe.mirai.message.code.MiraiCode
|
||||
import net.mamoe.mirai.message.code.MiraiCode.parseMiraiCode
|
||||
import net.mamoe.mirai.message.data.MessageSource.Key.quote
|
||||
import net.mamoe.mirai.message.data.MessageSource.Key.recall
|
||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
||||
@ -135,6 +137,26 @@ public interface MessageChain : Message, List<SingleMessage>, RandomAccess, Coda
|
||||
return json.decodeFromString(Serializer, string)
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 JSON 字符串解析 [MessageChain]
|
||||
* @param json 需要包含 [MessageSerializers.serializersModule]
|
||||
* @see deserializeFromJsonString
|
||||
* @see serializeToJsonString
|
||||
*/
|
||||
@JvmSynthetic
|
||||
@JvmStatic
|
||||
public inline fun String.deserializeJsonToMessageChain(json: Json): MessageChain =
|
||||
deserializeFromJsonString(this, json)
|
||||
|
||||
/**
|
||||
* 从 JSON 字符串解析 [MessageChain]
|
||||
* @see serializeToJsonString
|
||||
* @see deserializeFromJsonString
|
||||
*/
|
||||
@JvmSynthetic
|
||||
@JvmStatic
|
||||
public inline fun String.deserializeJsonToMessageChain(): MessageChain = deserializeFromJsonString(this)
|
||||
|
||||
/**
|
||||
* 将 [MessageChain] 序列化为 JSON 字符串.
|
||||
* @see deserializeFromJsonString
|
||||
@ -155,6 +177,14 @@ public interface MessageChain : Message, List<SingleMessage>, RandomAccess, Coda
|
||||
@JvmStatic
|
||||
public fun MessageChain.serializeToString(format: StringFormat): String =
|
||||
format.encodeToString(Serializer, this)
|
||||
|
||||
/**
|
||||
* 解析形如 "[mirai:]" 的 mirai 码, 即 [CodableMessage.toMiraiCode] 返回的内容.
|
||||
* @see MiraiCode.parseMiraiCode
|
||||
*/
|
||||
@JvmStatic
|
||||
public fun MessageChain.parseFromMiraiCode(miraiCode: String, contact: Contact? = null): MessageChain =
|
||||
miraiCode.parseMiraiCode(contact)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user