From fc4fb4f2972424332504a585141db3b17b3bd08e Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 18 Feb 2020 13:35:28 +0800 Subject: [PATCH] Retry fetch group on fail --- .../network/QQAndroidBotNetworkHandler.kt | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt index 18b201441..4c5e6ca82 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt @@ -215,12 +215,11 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler .sendAndExpect(retry = 2) troopListData.groups.forEach { troopNum -> - launch { - - try { + suspend fun loadGroup() { + tryNTimesOrException(3) { bot.groups.delegate.addLast( @Suppress("DuplicatedCode") - GroupImpl( + (GroupImpl( bot = bot, coroutineContext = bot.coroutineContext, id = troopNum.groupCode, @@ -242,13 +241,20 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler this.delegate.groupCode = troopNum.groupCode }, members = bot.queryGroupMemberList(troopNum.groupUin, troopNum.groupCode, troopNum.dwGroupOwnerUin) - ) + )) ) - } catch (e: Exception) { + }?.let { logger.error("群${troopNum.groupCode}的列表拉取失败, 一段时间后将会重试") - logger.error(e) + logger.error(it) + this@QQAndroidBotNetworkHandler.launch { + delay(10_000) + loadGroup() + } } } + launch { + loadGroup() + } } logger.info("群组列表与群成员加载完成, 共 ${troopListData.groups.size}个") } catch (e: Exception) {