From 79426f3bb0805423735651d4210327c1772c4a57 Mon Sep 17 00:00:00 2001 From: Him188 Date: Thu, 6 Feb 2020 15:46:20 +0800 Subject: [PATCH] Add coroutineScope --- .../network/QQAndroidBotNetworkHandler.kt | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 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 123b3911d..c993077b9 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 @@ -155,63 +155,63 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler val friendLoadFinish = currentTimeMillis val groupInfo = mutableMapOf() - try { - bot.logger.info("开始加载群组列表与群成员列表") - val troopListData = FriendList.GetTroopListSimplify( - bot.client - ).sendAndExpect(timeoutMillis = 5000) - // println("获取到群数量" + troopData.groups.size) - val toGet: MutableMap> = mutableMapOf() - troopListData.groups.forEach { - val contactList = ContactList(LockFreeLinkedList()) - val groupInfoResponse = try { - TroopManagement.GetGroupOperationInfo( - client = bot.client, - groupCode = it.groupCode - ).sendAndExpect() - } catch (e: Exception) { - bot.logger.info("获取" + it.groupCode + "的群设置失败") - TroopManagement.GetGroupOperationInfo.Response( - allowAnonymousChat = false, - allowMemberInvite = false, - autoApprove = false, - confessTalk = false - ) - } - val group = - GroupImpl( - bot = bot, - coroutineContext = this.coroutineContext, - id = it.groupCode, - uin = it.groupUin, - initName = it.groupName, - initAnnouncement = it.groupMemo, - initAllowMemberInvite = groupInfoResponse.allowMemberInvite, - initConfessTalk = groupInfoResponse.confessTalk, - initMuteAll = false,//todo - initAutoApprove = groupInfoResponse.autoApprove, - initAnonymousChat = groupInfoResponse.allowAnonymousChat, - members = contactList - ) - toGet[group] = contactList - bot.groups.delegate.addLast(group) - launch { - try { - getTroopMemberList(group, contactList, it.dwGroupOwnerUin) - groupInfo[it.groupCode] = contactList.size + coroutineScope { + try { + bot.logger.info("开始加载群组列表与群成员列表") + val troopListData = FriendList.GetTroopListSimplify(bot.client) + .sendAndExpect(timeoutMillis = 5000, retry = 2) + // println("获取到群数量" + troopData.groups.size) + val toGet: MutableMap> = mutableMapOf() + troopListData.groups.forEach { + val contactList = ContactList(LockFreeLinkedList()) + val groupInfoResponse = try { + TroopManagement.GetGroupOperationInfo( + client = bot.client, + groupCode = it.groupCode + ).sendAndExpect() } catch (e: Exception) { - groupInfo[it.groupCode] = -1 - bot.logger.info("群${it.groupCode}的列表拉取失败, 将采用动态加入") - bot.logger.error(e) + bot.logger.info("获取" + it.groupCode + "的群设置失败") + TroopManagement.GetGroupOperationInfo.Response( + allowAnonymousChat = false, + allowMemberInvite = false, + autoApprove = false, + confessTalk = false + ) + } + val group = + GroupImpl( + bot = bot, + coroutineContext = this.coroutineContext, + id = it.groupCode, + uin = it.groupUin, + initName = it.groupName, + initAnnouncement = it.groupMemo, + initAllowMemberInvite = groupInfoResponse.allowMemberInvite, + initConfessTalk = groupInfoResponse.confessTalk, + initMuteAll = false,//todo + initAutoApprove = groupInfoResponse.autoApprove, + initAnonymousChat = groupInfoResponse.allowAnonymousChat, + members = contactList + ) + toGet[group] = contactList + bot.groups.delegate.addLast(group) + launch { + try { + getTroopMemberList(group, contactList, it.dwGroupOwnerUin) + groupInfo[it.groupCode] = contactList.size + } catch (e: Exception) { + groupInfo[it.groupCode] = -1 + bot.logger.info("群${it.groupCode}的列表拉取失败, 将采用动态加入") + bot.logger.error(e) + } } } + bot.logger.info("群组列表与群成员加载完成, 共 ${troopListData.groups.size}个") + } catch (e: Exception) { + bot.logger.error("加载组信息失败|一般这是由于加载过于频繁导致/将以热加载方式加载群列表") + bot.logger.error(e) } - bot.logger.info("群组列表与群成员加载完成, 共 ${troopListData.groups.size}个") - } catch (e: Exception) { - bot.logger.error("加载组信息失败|一般这是由于加载过于频繁导致/将以热加载方式加载群列表") - bot.logger.error(e) } - //===log===// fun fillUntil(long: Number, size: Int): String { val x = long.toString()