diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt index fd7f0c002..7cd9d9efc 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt @@ -241,7 +241,8 @@ internal class MessageSvc { if (friend.lastMessageSequence.compareAndSet(instant, msg.msgHead.msgSeq)) { return@mapNotNull FriendMessage( friend, - msg.toMessageChain(bot, groupIdOrZero = 0, onlineSource = true) + msg.toMessageChain(bot, groupIdOrZero = 0, onlineSource = true), + msg.msgHead.msgTime ) } } else return@mapNotNull null @@ -266,7 +267,8 @@ internal class MessageSvc { msg.toMessageChain(bot, groupIdOrZero = 0, onlineSource = true, - isTemp = true) + isTemp = true), + msg.msgHead.msgTime ) } } else return@mapNotNull null diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt index 97ffb438f..6b827f93f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.kt @@ -108,7 +108,8 @@ internal class OnlinePush { bot.logger.warning("判断群员权限失败: ${pbPushMsg.msg.msgHead._miraiContentToString()}. 请完整截图或复制此日志发送给 mirai 维护者以帮助解决问题.") MemberPermission.MEMBER } - } + }, + time = pbPushMsg.msg.msgHead.msgTime ) } } diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt index df229c4d1..a870007ac 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt @@ -102,6 +102,12 @@ abstract class MessagePacketBase : P */ abstract val message: MessageChain + /** + * 消息发送时间 (由服务器提供) + */ + @SinceMirai("0.39.0") + abstract val time: Int + /** * 消息源 */ diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt index 8930500e0..4f6e01a40 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessage.kt @@ -20,19 +20,25 @@ import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.source import net.mamoe.mirai.utils.PlannedRemoval +import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.getValue import net.mamoe.mirai.utils.unsafeWeakRef /** * 好友消息 */ -class FriendMessage( +class FriendMessage constructor( sender: Friend, - override val message: MessageChain + override val message: MessageChain, + override val time: Int ) : ContactMessage(), BroadcastControllable { @PlannedRemoval("1.0.0") @Deprecated("", level = DeprecationLevel.HIDDEN) - constructor(sender: QQ, message: MessageChain) : this(sender as Friend, message) + constructor(sender: QQ, message: MessageChain) : this(sender as Friend, message, currentTimeSeconds.toInt()) + + @PlannedRemoval("1.0.0") + @Deprecated("", level = DeprecationLevel.HIDDEN) + constructor(sender: Friend, message: MessageChain) : this(sender, message, currentTimeSeconds.toInt()) init { val source = message.getOrNull(MessageSource) ?: error("Cannot find MessageSource from message") diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt index c457c9517..abb834a16 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessage.kt @@ -15,6 +15,8 @@ import net.mamoe.mirai.contact.Member import net.mamoe.mirai.contact.MemberPermission import net.mamoe.mirai.event.Event import net.mamoe.mirai.message.data.* +import net.mamoe.mirai.utils.PlannedRemoval +import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.getValue import net.mamoe.mirai.utils.unsafeWeakRef @@ -26,8 +28,14 @@ class GroupMessage( */ val permission: MemberPermission, sender: Member, - override val message: MessageChain + override val message: MessageChain, + override val time: Int ) : ContactMessage(), Event { + @PlannedRemoval("1.0.0") + @Deprecated("", level = DeprecationLevel.HIDDEN) + constructor(senderName: String, permission: MemberPermission, sender: Member, message: MessageChain) : + this(senderName, permission, sender, message, currentTimeSeconds.toInt()) + init { val source = message.getOrNull(MessageSource) ?: error("Cannot find MessageSource from message") check(source is OnlineMessageSource.Incoming.FromGroup) { "source provided to a GroupMessage must be an instance of OnlineMessageSource.Incoming.FromGroup" } diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt index c5a9cd873..a07ce45fa 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessage.kt @@ -9,9 +9,7 @@ import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource import net.mamoe.mirai.message.data.source -import net.mamoe.mirai.utils.SinceMirai -import net.mamoe.mirai.utils.getValue -import net.mamoe.mirai.utils.unsafeWeakRef +import net.mamoe.mirai.utils.* /** * 临时会话消息 @@ -19,8 +17,14 @@ import net.mamoe.mirai.utils.unsafeWeakRef @SinceMirai("0.35.0") class TempMessage( sender: Member, - override val message: MessageChain + override val message: MessageChain, + override val time: Int ) : ContactMessage(), BroadcastControllable { + @PlannedRemoval("1.0.0") + @Deprecated("", level = DeprecationLevel.HIDDEN) + constructor(sender: Member, message: MessageChain) : + this(sender, message, currentTimeSeconds.toInt()) + init { val source = message.getOrNull(MessageSource) ?: error("Cannot find MessageSource from message") check(source is OnlineMessageSource.Incoming.FromTemp) { "source provided to a TempMessage must be an instance of OnlineMessageSource.Incoming.FromTemp" }