From 9faea0a3962ec5cf6db4714c397395b3fbbe4508 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sun, 1 Mar 2020 00:32:33 +0800
Subject: [PATCH] Add `MessageRecallEvent.FriendRecall`

---
 .../net.mamoe.mirai/event/events/BotEvents.kt | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
index cb816a329..64a6b9e5e 100644
--- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
+++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt
@@ -114,6 +114,22 @@ sealed class MessageRecallEvent : BotEvent {
      */
     abstract val messageTime: Int // seconds
 
+    /**
+     * 好友消息撤回事件, 暂不支持解析.
+     */
+    data class FriendRecall(
+        override val bot: Bot,
+        override val messageId: Long,
+        override val messageTime: Int,
+        /**
+         * 撤回操作人, 可能为 [Bot.uin] 或好友的 [QQ.id]
+         */
+        val operator: Long
+    ) : MessageRecallEvent(), Packet {
+        override val authorId: Long
+            get() = bot.uin
+    }
+
     data class GroupRecall(
         override val bot: Bot,
         override val authorId: Long,
@@ -131,6 +147,14 @@ sealed class MessageRecallEvent : BotEvent {
 val MessageRecallEvent.GroupRecall.author: Member
     get() = if (authorId == bot.uin) group.botAsMember else group[authorId]
 
+val MessageRecallEvent.FriendRecall.isByBot: Boolean get() = this.operator == bot.uin
+
+val MessageRecallEvent.isByBot: Boolean
+    get() = when (this) {
+        is MessageRecallEvent.FriendRecall -> this.isByBot
+        is MessageRecallEvent.GroupRecall -> (this as GroupOperableEvent).isByBot
+    }
+
 // endregion
 
 // region 图片