diff --git a/docs/Messages.md b/docs/Messages.md index e25737224..7f38276cd 100644 --- a/docs/Messages.md +++ b/docs/Messages.md @@ -42,11 +42,11 @@ Mirai 支持富文本消息。各类型消息元素如下文表格所示。 [`At`]: ../mirai-core-api/src/commonMain/kotlin/message/data/At.kt [`AtAll`]: ../mirai-core-api/src/commonMain/kotlin/message/data/AtAll.kt [`Face`]: ../mirai-core-api/src/commonMain/kotlin/message/data/Face.kt -[`PokeMessage`]: ../mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt -[`VipFace`]: ../mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt +[`PokeMessage`]: ../mirai-core-api/src/commonMain/kotlin/message/data/PokeMessage.kt +[`VipFace`]: ../mirai-core-api/src/commonMain/kotlin/message/data/VipFace.kt [`Image`]: ../mirai-core-api/src/commonMain/kotlin/message/data/Image.kt -[`FlashImage`]: ../mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt -[`MarketFace`]: ../mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt +[`FlashImage`]: ../mirai-core-api/src/commonMain/kotlin/message/data/FlashImage.kt +[`MarketFace`]: ../mirai-core-api/src/commonMain/kotlin/message/data/MarketFace.kt [`MessageSource`]: ../mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt [`QuoteReply`]: ../mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt @@ -75,6 +75,8 @@ Mirai 支持富文本消息。各类型消息元素如下文表格所示。 ***注意:内容会首先被转义,详见 [转义规则](#转义规则)*** +**请打开相关消息类型的源码查看用法。** + > 回到 [目录](#目录) ## Mirai 码 diff --git a/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt index b37d29fc5..10a3fd627 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt @@ -13,11 +13,14 @@ import net.mamoe.mirai.Bot import net.mamoe.mirai.Mirai import net.mamoe.mirai.contact.* import net.mamoe.mirai.event.events.NudgeEvent +import net.mamoe.mirai.message.data.PokeMessage import net.mamoe.mirai.utils.BotConfiguration import net.mamoe.mirai.utils.BotConfiguration.MiraiProtocol /** - * 一个 "戳一戳" 消息. + * 一个 "戳一戳" 动作. + * + * 备注: 这类似微信拍一拍. 消息对话框中显示的 "一个手指" 的戳一戳是 [PokeMessage] * * 仅在手机 QQ 8.4.0 左右版本才受支持. 其他客户端会忽略这些消息. * diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/PokeMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/PokeMessage.kt index 71dc02e7f..7b629d067 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/PokeMessage.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/PokeMessage.kt @@ -11,6 +11,7 @@ package net.mamoe.mirai.message.data import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import net.mamoe.mirai.message.action.Nudge import net.mamoe.mirai.message.code.CodableMessage import net.mamoe.mirai.message.code.internal.appendStringAsMiraiCode import net.mamoe.mirai.utils.MiraiExperimentalApi @@ -20,6 +21,8 @@ import net.mamoe.mirai.utils.castOrNull /** * 戳一戳. 可以发送给好友或群. * + * 备注: 这是消息对话框中显示的 "一个手指" 的戳一戳. 类似微信拍一拍的是 [Nudge]. + * * ## mirai 码支持 * 格式: [mirai:poke:*[name]*,*[pokeType]*,*[id]*] * diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt b/mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt index cfbc5abdf..38fa77f3f 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt @@ -15,27 +15,24 @@ package net.mamoe.mirai.message.data import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import net.mamoe.mirai.message.data.MessageSource.Key.quote import net.mamoe.mirai.message.data.MessageSource.Key.recall import net.mamoe.mirai.utils.safeCast /** - * 引用回复. + * 引用回复. [QuoteReply] 被作为 [MessageMetadata], 因为它不包含实际的消息内容. * * 支持引用任何一条消息发送给任何人. * - * ### 元数据 - * [QuoteReply] 被作为 [MessageMetadata], 因为它不包含实际的消息内容, 且只能在消息中单独存在. - * - * ### [source] 的类型: - * - 在发送引用回复时, [source] 类型为 [OnlineMessageSource] 或 [OfflineMessageSource] - * - 在接收引用回复时, [source] 类型一定为 [OfflineMessageSource] - * - * ### 原消息内容 * 引用回复的原消息内容完全由 [source] 中 [MessageSource.originalMessage] 控制, 客户端不会自行寻找原消息. + * 可通过 [MessageSource.copyAmend] 修改引用的消息内容. * - * ### 客户端内跳转 - * 客户端在跳转原消息时, 会通过 [MessageSource.ids] 等 metadata + * 客户端通过 [MessageSource.ids] 等数据定位源消息, 在修改时使用 [MessageSourceBuilder.metadata] 可以修改定位结果. + * + * ## 创建引用回复 + * - 直接构造 [QuoteReply]: `new QuoteReply(source)` + * - 在 Kotlin 使用扩展 [MessageSource.quote] * * @see MessageSource 获取有关消息源的更多信息 */ @@ -44,9 +41,7 @@ import net.mamoe.mirai.utils.safeCast public data class QuoteReply( public val source: MessageSource ) : Message, MessageMetadata, ConstrainSingle { - public companion object Key : AbstractMessageKey({ it.safeCast() }) { - public const val SERIAL_NAME: String = "QuoteReply" - } + public constructor(sourceMessage: MessageChain) : this(sourceMessage.getOrFail(MessageSource)) public override val key: MessageKey get() = Key @@ -55,6 +50,10 @@ public data class QuoteReply( public override fun equals(other: Any?): Boolean = other is QuoteReply && other.source == this.source public override fun hashCode(): Int = source.hashCode() + + public companion object Key : AbstractMessageKey({ it.safeCast() }) { + public const val SERIAL_NAME: String = "QuoteReply" + } } /**