Him188 пре 5 година
родитељ
комит
454205a6af

+ 4 - 2
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

+ 2 - 1
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
             )
         }
     }

+ 6 - 0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/ContactMessage.kt

@@ -102,6 +102,12 @@ abstract class MessagePacketBase<out TSender : User, out TSubject : Contact> : P
      */
     abstract val message: MessageChain
 
+    /**
+     * 消息发送时间 (由服务器提供)
+     */
+    @SinceMirai("0.39.0")
+    abstract val time: Int
+
     /**
      * 消息源
      */

+ 9 - 3
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")

+ 9 - 1
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" }

+ 8 - 4
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" }