Add MessageSource.isOriginalMessageInitialized

This commit is contained in:
Him188 2022-05-23 18:05:23 +01:00
parent 7687749030
commit c75d1f7074
6 changed files with 38 additions and 2 deletions

View File

@ -4834,6 +4834,7 @@ public abstract class net/mamoe/mirai/message/data/MessageSource : net/mamoe/mir
public abstract fun getOriginalMessage ()Lnet/mamoe/mirai/message/data/MessageChain;
public abstract fun getTargetId ()J
public abstract fun getTime ()I
public abstract fun isOriginalMessageInitialized ()Z
public static final fun quote (Lnet/mamoe/mirai/message/data/MessageChain;)Lnet/mamoe/mirai/message/data/QuoteReply;
public static final fun quote (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/QuoteReply;
public static final fun recall (Lnet/mamoe/mirai/message/data/MessageChain;)V

View File

@ -4834,6 +4834,7 @@ public abstract class net/mamoe/mirai/message/data/MessageSource : net/mamoe/mir
public abstract fun getOriginalMessage ()Lnet/mamoe/mirai/message/data/MessageChain;
public abstract fun getTargetId ()J
public abstract fun getTime ()I
public abstract fun isOriginalMessageInitialized ()Z
public static final fun quote (Lnet/mamoe/mirai/message/data/MessageChain;)Lnet/mamoe/mirai/message/data/QuoteReply;
public static final fun quote (Lnet/mamoe/mirai/message/data/MessageSource;)Lnet/mamoe/mirai/message/data/QuoteReply;
public static final fun recall (Lnet/mamoe/mirai/message/data/MessageChain;)V

View File

@ -180,6 +180,13 @@ public sealed class MessageSource : Message, MessageMetadata, ConstrainSingle {
*/
public abstract val originalMessage: MessageChain // see OutgoingMessageSourceInternal.originalMessage
/**
* [originalMessage] 已被初始化后返回 `true`.
*
* @since 2.12
*/
public abstract val isOriginalMessageInitialized: Boolean
public abstract override fun toString(): String
@MiraiInternalApi

View File

@ -57,6 +57,9 @@ internal class OnlineMessageSourceFromFriendImpl(
msg.toMessageChainNoSource(bot, 0, MessageSourceKind.FRIEND)
}
override val originalMessage: MessageChain get() = originalMessageLazy.value
override val isOriginalMessageInitialized: Boolean
get() = originalMessageLazy.isInitialized()
override val sender: Friend = bot.getFriendOrFail(msg.first().msgHead.fromUin)
private val jceData: ImMsgBody.SourceMsg by lazy { msg.toJceDataPrivate(internalIds) }
@ -87,6 +90,9 @@ internal class OnlineMessageSourceFromStrangerImpl(
msg.toMessageChainNoSource(bot, 0, MessageSourceKind.STRANGER)
}
override val originalMessage: MessageChain get() = originalMessageLazy.value
override val isOriginalMessageInitialized: Boolean
get() = originalMessageLazy.isInitialized()
override val sender: Stranger = bot.getStrangerOrFail(msg.first().msgHead.fromUin)
private val jceData: ImMsgBody.SourceMsg by lazy { msg.toJceDataPrivate(internalIds) }
@ -154,6 +160,9 @@ internal class OnlineMessageSourceFromTempImpl(
msg.toMessageChainNoSource(bot, groupIdOrZero = 0, MessageSourceKind.TEMP)
}
override val originalMessage: MessageChain get() = originalMessageLazy.value
override val isOriginalMessageInitialized: Boolean
get() = originalMessageLazy.isInitialized()
override val sender: Member = with(msg.first().msgHead) {
// it must be uin, see #1410
// corresponding test: net.mamoe.mirai.internal.notice.processors.MessageTest.group temp message test 2
@ -189,6 +198,9 @@ internal class OnlineMessageSourceFromGroupImpl(
msg.toMessageChainNoSource(bot, groupIdOrZero = group.id, MessageSourceKind.GROUP)
}
override val originalMessage: MessageChain get() = originalMessageLazy.value
override val isOriginalMessageInitialized: Boolean
get() = originalMessageLazy.isInitialized()
override val subject: GroupImpl by lazy {
val groupCode = msg.first().msgHead.groupInfo?.groupCode

View File

@ -37,13 +37,15 @@ internal class OfflineMessageSourceImplData(
override val time: Int,
override val fromId: Long,
override val targetId: Long,
originalMessageLazy: Lazy<MessageChain>,
private val originalMessageLazy: Lazy<MessageChain>,
override val internalIds: IntArray,
) : OfflineMessageSource(), MessageSourceInternal {
object Serializer : MessageSourceSerializerImpl("OfflineMessageSource")
override val sequenceIds: IntArray get() = ids
override val originalMessage: MessageChain by originalMessageLazy
override val isOriginalMessageInitialized: Boolean
get() = originalMessageLazy.isInitialized()
// for override.
// if provided, no need to serialize from message
@ -157,7 +159,9 @@ internal fun OfflineMessageSourceImplData(
targetId = targetId,
originalMessageLazy = lazyOf(originalMessage),
internalIds = internalIds
)
).also {
it.originalMessage // initialize lazy, to make isOriginalMessageInitialized true.
}
internal fun OfflineMessageSourceImplData(
delegate: ImMsgBody.SourceMsg,

View File

@ -88,6 +88,9 @@ internal class OnlineMessageSourceToFriendImpl(
) : OnlineMessageSource.Outgoing.ToFriend(), MessageSourceInternal, OutgoingMessageSourceInternal {
object Serializer : MessageSourceSerializerImpl("OnlineMessageSourceToFriend")
override val isOriginalMessageInitialized: Boolean
get() = true
override val bot: Bot
get() = sender
override val ids: IntArray
@ -119,6 +122,8 @@ internal class OnlineMessageSourceToStrangerImpl(
object Serializer : MessageSourceSerializerImpl("OnlineMessageSourceToStranger")
override val isOriginalMessageInitialized: Boolean
get() = true
override val bot: Bot
get() = sender
override val ids: IntArray
@ -149,6 +154,9 @@ internal class OnlineMessageSourceToTempImpl(
object Serializer : MessageSourceSerializerImpl("OnlineMessageSourceToTemp")
override val isOriginalMessageInitialized: Boolean
get() = true
override val bot: Bot
get() = sender
override val ids: IntArray
@ -175,6 +183,9 @@ internal class OnlineMessageSourceToGroupImpl(
) : OnlineMessageSource.Outgoing.ToGroup(), MessageSourceInternal, OutgoingMessageSourceInternal {
object Serializer : MessageSourceSerializerImpl("OnlineMessageSourceToGroup")
override val isOriginalMessageInitialized: Boolean
get() = true
override val ids: IntArray
get() = sequenceIds
override val bot: Bot