From 10eb7a452f41fa666d96abfb4c05d59309e2ebb9 Mon Sep 17 00:00:00 2001 From: Karlatemp Date: Wed, 3 Feb 2021 18:57:23 +0800 Subject: [PATCH] Fix exception logging in event processing --- .../network/QQAndroidBotNetworkHandler.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt index b68da5bb0..1013932d5 100644 --- a/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt @@ -25,10 +25,7 @@ import net.mamoe.mirai.Mirai import net.mamoe.mirai.contact.deviceName import net.mamoe.mirai.contact.platform import net.mamoe.mirai.event.* -import net.mamoe.mirai.event.events.BotOfflineEvent -import net.mamoe.mirai.event.events.BotOnlineEvent -import net.mamoe.mirai.event.events.BotReloginEvent -import net.mamoe.mirai.event.events.MessageEvent +import net.mamoe.mirai.event.events.* import net.mamoe.mirai.internal.QQAndroidBot import net.mamoe.mirai.internal.contact.* import net.mamoe.mirai.internal.createOtherClient @@ -667,10 +664,20 @@ internal class QQAndroidBotNetworkHandler(coroutineContext: CoroutineContext, bo } if (packet is Event) { - if (packet is BroadcastControllable) { - if (packet.shouldBroadcast) packet.broadcast() - } else { - packet.broadcast() + if ((packet as? BroadcastControllable)?.shouldBroadcast != false) { + if (packet is BotEvent) { + withContext(bot.coroutineContext[CoroutineExceptionHandler] ?: CoroutineExceptionHandler { _, t -> + bot.logger.warning( + """ + Event processing: An exception occurred but no CoroutineExceptionHandler found in coroutineContext of bot + """.trimIndent(), t + ) + }) { + packet.broadcast() + } + } else { + packet.broadcast() + } } if (packet is CancellableEvent && packet.isCancelled) return