From a77b52e7d3dfd22924f299fa628d6f3482a9c4e1 Mon Sep 17 00:00:00 2001 From: Him188 Date: Thu, 29 Apr 2021 16:23:40 +0800 Subject: [PATCH] Add bot argument to PushReqResponse and filter in ConfigPushProcessorImpl --- .../network/components/ConfigPushProcessor.kt | 2 +- .../protocol/packet/login/ConfigPushSvc.kt | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/components/ConfigPushProcessor.kt b/mirai-core/src/commonMain/kotlin/network/components/ConfigPushProcessor.kt index 8546e0e17..6cda96ad6 100644 --- a/mirai-core/src/commonMain/kotlin/network/components/ConfigPushProcessor.kt +++ b/mirai-core/src/commonMain/kotlin/network/components/ConfigPushProcessor.kt @@ -32,7 +32,7 @@ internal class ConfigPushProcessorImpl( private val logger: MiraiLogger, ) : ConfigPushProcessor { override suspend fun syncConfigPush(network: NetworkHandler) { - if (nextEventOrNull(60_000) == null) { + if (nextEventOrNull(60_000) { it.bot == network.context.bot } == null) { val bdhSyncer = network.context[BdhSessionSyncer] if (!bdhSyncer.hasSession) { val e = IllegalStateException("Timeout waiting for ConfigPush.") diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt index 0af6f438a..6e62cfc99 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt @@ -50,26 +50,29 @@ internal class ConfigPushSvc { ) { override val canBeCached: Boolean get() = false - sealed class PushReqResponse(val struct: PushReqJceStruct) : Packet, Event, AbstractEvent(), Packet.NoEventLog { - class Unknown(struct: PushReqJceStruct) : PushReqResponse(struct) { + sealed class PushReqResponse( + val struct: PushReqJceStruct, + val bot: QQAndroidBot, + ) : Packet, Event, AbstractEvent(), Packet.NoEventLog { + class Unknown(struct: PushReqJceStruct, bot: QQAndroidBot) : PushReqResponse(struct, bot) { override fun toString(): String { return "ConfigPushSvc.PushReq.PushReqResponse.Unknown" } } - class LogAction(struct: PushReqJceStruct) : PushReqResponse(struct) { + class LogAction(struct: PushReqJceStruct, bot: QQAndroidBot) : PushReqResponse(struct, bot) { override fun toString(): String { return "ConfigPushSvc.PushReq.PushReqResponse.LogAction" } } - class ServerListPush(struct: PushReqJceStruct) : PushReqResponse(struct) { + class ServerListPush(struct: PushReqJceStruct, bot: QQAndroidBot) : PushReqResponse(struct, bot) { override fun toString(): String { return "ConfigPushSvc.PushReq.PushReqResponse.ServerListPush" } } - class ConfigPush(struct: PushReqJceStruct) : PushReqResponse(struct) { + class ConfigPush(struct: PushReqJceStruct, bot: QQAndroidBot) : PushReqResponse(struct, bot) { override fun toString(): String { return "ConfigPushSvc.PushReq.PushReqResponse.ConfigPush" } @@ -81,10 +84,10 @@ internal class ConfigPushSvc { override suspend fun ByteReadPacket.decode(bot: QQAndroidBot, sequenceId: Int): PushReqResponse { val pushReq = readUniPacket(PushReqJceStruct.serializer(), "PushReq") return when (pushReq.type) { - 1 -> PushReqResponse.ServerListPush(pushReq) - 2 -> PushReqResponse.ConfigPush(pushReq) - 3 -> PushReqResponse.LogAction(pushReq) - else -> PushReqResponse.Unknown(pushReq) + 1 -> PushReqResponse.ServerListPush(pushReq, bot) + 2 -> PushReqResponse.ConfigPush(pushReq, bot) + 3 -> PushReqResponse.LogAction(pushReq, bot) + else -> PushReqResponse.Unknown(pushReq, bot) } }