mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-06 17:10:48 +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
|
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("unused")
|
@file:Suppress("unused", "NOTHING_TO_INLINE")
|
||||||
|
|
||||||
package net.mamoe.mirai.message.code
|
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.code.internal.parseMiraiCodeImpl
|
||||||
import net.mamoe.mirai.message.data.Message
|
import net.mamoe.mirai.message.data.Message
|
||||||
import net.mamoe.mirai.message.data.MessageChain
|
import net.mamoe.mirai.message.data.MessageChain
|
||||||
|
import net.mamoe.mirai.message.data.MessageChain.Companion.parseFromMiraiCode
|
||||||
import net.mamoe.mirai.utils.safeCast
|
import net.mamoe.mirai.utils.safeCast
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -22,11 +23,20 @@ import net.mamoe.mirai.utils.safeCast
|
|||||||
*/
|
*/
|
||||||
public object MiraiCode {
|
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
|
@JvmOverloads
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
public fun String.parseMiraiCode(contact: Contact? = null): MessageChain = parseMiraiCodeImpl(contact)
|
public fun parseMiraiCode(code: String, contact: Contact? = null): MessageChain = code.parseMiraiCodeImpl(contact)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换得到 mirai 码.
|
* 转换得到 mirai 码.
|
||||||
|
@ -21,10 +21,12 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
|
import net.mamoe.mirai.contact.Contact
|
||||||
import net.mamoe.mirai.event.events.MessageEvent
|
import net.mamoe.mirai.event.events.MessageEvent
|
||||||
import net.mamoe.mirai.message.MessageSerializers
|
import net.mamoe.mirai.message.MessageSerializers
|
||||||
import net.mamoe.mirai.message.code.CodableMessage
|
import net.mamoe.mirai.message.code.CodableMessage
|
||||||
import net.mamoe.mirai.message.code.MiraiCode
|
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.quote
|
||||||
import net.mamoe.mirai.message.data.MessageSource.Key.recall
|
import net.mamoe.mirai.message.data.MessageSource.Key.recall
|
||||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
||||||
@ -135,6 +137,26 @@ public interface MessageChain : Message, List<SingleMessage>, RandomAccess, Coda
|
|||||||
return json.decodeFromString(Serializer, string)
|
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 字符串.
|
* 将 [MessageChain] 序列化为 JSON 字符串.
|
||||||
* @see deserializeFromJsonString
|
* @see deserializeFromJsonString
|
||||||
@ -155,6 +177,14 @@ public interface MessageChain : Message, List<SingleMessage>, RandomAccess, Coda
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
public fun MessageChain.serializeToString(format: StringFormat): String =
|
public fun MessageChain.serializeToString(format: StringFormat): String =
|
||||||
format.encodeToString(Serializer, this)
|
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