Bladeren bron

[core] change argument from `NewFriendRequestEvent` to `NewFriendRequest` in LowLevelApiAccessor

StageGuard 2 jaren geleden
bovenliggende
commit
4c4b714fa9

+ 4 - 2
mirai-core-api/compatibility-validation/android/api/android.api

@@ -26,6 +26,8 @@ public abstract interface class net/mamoe/mirai/Bot : kotlinx/coroutines/Corouti
 	public static fun getInstances ()Ljava/util/List;
 	public static fun getInstances ()Ljava/util/List;
 	public static fun getInstancesSequence ()Lkotlin/sequences/Sequence;
 	public static fun getInstancesSequence ()Lkotlin/sequences/Sequence;
 	public abstract fun getLogger ()Lnet/mamoe/mirai/utils/MiraiLogger;
 	public abstract fun getLogger ()Lnet/mamoe/mirai/utils/MiraiLogger;
+	public fun getNewFriendRequestList (Z)Ljava/util/List;
+	public abstract fun getNewFriendRequestList (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public abstract fun getOtherClients ()Lnet/mamoe/mirai/contact/ContactList;
 	public abstract fun getOtherClients ()Lnet/mamoe/mirai/contact/ContactList;
 	public fun getStranger (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStranger (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStrangerOrFail (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStrangerOrFail (J)Lnet/mamoe/mirai/contact/Stranger;
@@ -135,10 +137,10 @@ public abstract interface annotation class net/mamoe/mirai/LowLevelApi : java/la
 }
 }
 
 
 public abstract interface class net/mamoe/mirai/LowLevelApiAccessor {
 public abstract interface class net/mamoe/mirai/LowLevelApiAccessor {
-	public fun getFriendRequestList (Lnet/mamoe/mirai/Bot;)Ljava/util/List;
-	public abstract fun getFriendRequestList (Lnet/mamoe/mirai/Bot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public fun getGroupVoiceDownloadUrl (Lnet/mamoe/mirai/Bot;[BJJ)Ljava/lang/String;
 	public fun getGroupVoiceDownloadUrl (Lnet/mamoe/mirai/Bot;[BJJ)Ljava/lang/String;
 	public abstract fun getGroupVoiceDownloadUrl (Lnet/mamoe/mirai/Bot;[BJJLkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public abstract fun getGroupVoiceDownloadUrl (Lnet/mamoe/mirai/Bot;[BJJLkotlin/coroutines/Continuation;)Ljava/lang/Object;
+	public fun getNewFriendRequestList (Lnet/mamoe/mirai/Bot;)Ljava/util/List;
+	public abstract fun getNewFriendRequestList (Lnet/mamoe/mirai/Bot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public fun getRawGroupList (Lnet/mamoe/mirai/Bot;)Lkotlin/sequences/Sequence;
 	public fun getRawGroupList (Lnet/mamoe/mirai/Bot;)Lkotlin/sequences/Sequence;
 	public abstract fun getRawGroupList (Lnet/mamoe/mirai/Bot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public abstract fun getRawGroupList (Lnet/mamoe/mirai/Bot;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public fun getRawGroupMemberList (Lnet/mamoe/mirai/Bot;JJJ)Lkotlin/sequences/Sequence;
 	public fun getRawGroupMemberList (Lnet/mamoe/mirai/Bot;JJJ)Lkotlin/sequences/Sequence;

+ 2 - 2
mirai-core-api/compatibility-validation/jvm/api/jvm.api

@@ -26,8 +26,8 @@ public abstract interface class net/mamoe/mirai/Bot : kotlinx/coroutines/Corouti
 	public static fun getInstances ()Ljava/util/List;
 	public static fun getInstances ()Ljava/util/List;
 	public static fun getInstancesSequence ()Lkotlin/sequences/Sequence;
 	public static fun getInstancesSequence ()Lkotlin/sequences/Sequence;
 	public abstract fun getLogger ()Lnet/mamoe/mirai/utils/MiraiLogger;
 	public abstract fun getLogger ()Lnet/mamoe/mirai/utils/MiraiLogger;
-	public fun getNewFriendRequestList ()Ljava/util/List;
-	public abstract fun getNewFriendRequestList (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
+	public fun getNewFriendRequestList (Z)Ljava/util/List;
+	public abstract fun getNewFriendRequestList (ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
 	public abstract fun getOtherClients ()Lnet/mamoe/mirai/contact/ContactList;
 	public abstract fun getOtherClients ()Lnet/mamoe/mirai/contact/ContactList;
 	public fun getStranger (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStranger (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStrangerOrFail (J)Lnet/mamoe/mirai/contact/Stranger;
 	public fun getStrangerOrFail (J)Lnet/mamoe/mirai/contact/Stranger;

+ 4 - 3
mirai-core-api/src/commonMain/kotlin/Bot.kt

@@ -16,6 +16,7 @@ import kotlinx.coroutines.*
 import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
 import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.contact.friendgroup.FriendGroups
 import net.mamoe.mirai.contact.friendgroup.FriendGroups
+import net.mamoe.mirai.data.RequestEventData
 import net.mamoe.mirai.event.EventChannel
 import net.mamoe.mirai.event.EventChannel
 import net.mamoe.mirai.event.events.BotEvent
 import net.mamoe.mirai.event.events.BotEvent
 import net.mamoe.mirai.event.events.NewFriendRequestEvent
 import net.mamoe.mirai.event.events.NewFriendRequestEvent
@@ -172,13 +173,13 @@ public interface Bot : CoroutineScope, ContactOrBot, UserOrBot {
     public override fun nudge(): BotNudge = BotNudge(this)
     public override fun nudge(): BotNudge = BotNudge(this)
 
 
     /**
     /**
-     * 获取未处理的好友请求事件
+     * 获取未处理的好友请求,作为事件返回
      *
      *
+     * @param broadcast 是否广播该事件
      * @see NewFriendRequestEvent
      * @see NewFriendRequestEvent
      * @since 2.16
      * @since 2.16
      */
      */
-    public suspend fun getNewFriendRequestList(): List<NewFriendRequestEvent>
-
+    public suspend fun getNewFriendRequestList(broadcast: Boolean): List<NewFriendRequestEvent>
 
 
     /**
     /**
      * 关闭这个 [Bot], 立即取消 [Bot] 的 [SupervisorJob], 取消与这个 [Bot] 相关的所有有协程联系的任务.
      * 关闭这个 [Bot], 立即取消 [Bot] 的 [SupervisorJob], 取消与这个 [Bot] 相关的所有有协程联系的任务.

+ 2 - 2
mirai-core-api/src/commonMain/kotlin/LowLevelApiAccessor.kt

@@ -16,8 +16,8 @@ import me.him188.kotlin.jvm.blocking.bridge.JvmBlockingBridge
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.contact.*
 import net.mamoe.mirai.data.FriendInfo
 import net.mamoe.mirai.data.FriendInfo
 import net.mamoe.mirai.data.MemberInfo
 import net.mamoe.mirai.data.MemberInfo
+import net.mamoe.mirai.data.RequestEventData
 import net.mamoe.mirai.data.StrangerInfo
 import net.mamoe.mirai.data.StrangerInfo
-import net.mamoe.mirai.event.events.NewFriendRequestEvent
 import net.mamoe.mirai.utils.MiraiExperimentalApi
 import net.mamoe.mirai.utils.MiraiExperimentalApi
 import net.mamoe.mirai.utils.NotStableForInheritance
 import net.mamoe.mirai.utils.NotStableForInheritance
 import kotlin.annotation.AnnotationTarget.*
 import kotlin.annotation.AnnotationTarget.*
@@ -202,5 +202,5 @@ public interface LowLevelApiAccessor {
      * 获取新好友请求列表
      * 获取新好友请求列表
      */
      */
     @LowLevelApi
     @LowLevelApi
-    public suspend fun getNewFriendRequestList(bot: Bot): List<NewFriendRequestEvent>
+    public suspend fun getNewFriendRequestList(bot: Bot): List<RequestEventData.NewFriendRequest>
 }
 }

+ 1 - 1
mirai-core-mock/src/internal/MockBotImpl.kt

@@ -120,7 +120,7 @@ internal class MockBotImpl(
         }
         }
     }
     }
 
 
-    override suspend fun getNewFriendRequestList(): List<NewFriendRequestEvent> {
+    override suspend fun getNewFriendRequestList(broadcast: Boolean): List<NewFriendRequestEvent> {
         return listOf()
         return listOf()
     }
     }
 
 

+ 1 - 1
mirai-core/src/commonMain/kotlin/MiraiImpl.kt

@@ -802,7 +802,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
         }
         }
     }
     }
 
 
-    override suspend fun getNewFriendRequestList(bot: Bot): List<NewFriendRequestEvent>{
+    override suspend fun getNewFriendRequestList(bot: Bot): List<RequestEventData.NewFriendRequest>{
         bot.asQQAndroidBot()
         bot.asQQAndroidBot()
         val resp = bot.network.sendAndExpect(NewContact.SystemMsgNewFriend(bot.client))
         val resp = bot.network.sendAndExpect(NewContact.SystemMsgNewFriend(bot.client))
 
 

+ 12 - 2
mirai-core/src/commonMain/kotlin/QQAndroidBot.kt

@@ -14,6 +14,7 @@ import kotlinx.coroutines.*
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.Bot
 import net.mamoe.mirai.Mirai
 import net.mamoe.mirai.Mirai
 import net.mamoe.mirai.auth.AuthReason
 import net.mamoe.mirai.auth.AuthReason
+import net.mamoe.mirai.data.RequestEventData
 import net.mamoe.mirai.event.broadcast
 import net.mamoe.mirai.event.broadcast
 import net.mamoe.mirai.event.events.BotOfflineEvent
 import net.mamoe.mirai.event.events.BotOfflineEvent
 import net.mamoe.mirai.event.events.BotOnlineEvent
 import net.mamoe.mirai.event.events.BotOnlineEvent
@@ -321,8 +322,17 @@ internal open class QQAndroidBot constructor(
         ) // We can move the factory to configuration but this is not necessary for now.
         ) // We can move the factory to configuration but this is not necessary for now.
     }
     }
 
 
-    override suspend fun getNewFriendRequestList(): List<NewFriendRequestEvent> {
-        return Mirai.getNewFriendRequestList(this)
+    override suspend fun getNewFriendRequestList(broadcast: Boolean): List<NewFriendRequestEvent> {
+        return Mirai.getNewFriendRequestList(this).map { data ->
+            NewFriendRequestEvent(
+                this,
+                data.eventId,
+                data.message,
+                data.requester,
+                data.fromGroupId,
+                data.requesterNick
+            ).also { if (broadcast) it.broadcast() }
+        }
     }
     }
 }
 }
 
 

+ 5 - 6
mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NewContact.kt

@@ -12,7 +12,7 @@
 package net.mamoe.mirai.internal.network.protocol.packet.chat
 package net.mamoe.mirai.internal.network.protocol.packet.chat
 
 
 import io.ktor.utils.io.core.*
 import io.ktor.utils.io.core.*
-import net.mamoe.mirai.event.events.NewFriendRequestEvent
+import net.mamoe.mirai.data.RequestEventData
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.QQAndroidBot
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.QQAndroidClient
 import net.mamoe.mirai.internal.network.QQAndroidClient
@@ -54,7 +54,7 @@ internal class NewContact {
             )
             )
         }
         }
 
 
-        internal class Response(val list: List<NewFriendRequestEvent>) : Packet
+        internal class Response(val list: List<RequestEventData.NewFriendRequest>) : Packet
 
 
         override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
         override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response {
             val resp = readProtoBuf(Structmsg.RspSystemMsgNew.serializer())
             val resp = readProtoBuf(Structmsg.RspSystemMsgNew.serializer())
@@ -65,13 +65,12 @@ internal class NewContact {
                 val systemMsg = struct.msg ?: return@map null
                 val systemMsg = struct.msg ?: return@map null
                 if (systemMsg.actions.size < 2) return@map null // 只返回可以操作的(同意或拒绝好友请求)
                 if (systemMsg.actions.size < 2) return@map null // 只返回可以操作的(同意或拒绝好友请求)
 
 
-                NewFriendRequestEvent(
-                    bot,
+                RequestEventData.NewFriendRequest(
                     struct.msgSeq,
                     struct.msgSeq,
-                    systemMsg.msgAdditional,
                     struct.reqUin,
                     struct.reqUin,
-                    systemMsg.groupCode,
                     systemMsg.reqUinNick,
                     systemMsg.reqUinNick,
+                    systemMsg.groupCode,
+                    systemMsg.msgAdditional,
                 )
                 )
             }.filterNotNull().let { Response(it) }
             }.filterNotNull().let { Response(it) }
         }
         }