From 32e8e21b87f3d5cf077ec54890f2bd2058fbedef Mon Sep 17 00:00:00 2001
From: "jiahua.liu" <n@mamoe.net>
Date: Mon, 3 Feb 2020 01:34:17 +0800
Subject: [PATCH] Group/Friend List finally complete

---
 .../network/QQAndroidBotNetworkHandler.kt     | 36 ++++++++++++++++---
 1 file changed, 32 insertions(+), 4 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 149fe9d43..7b348d689 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
@@ -105,12 +105,11 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
             }
         }
 
-        println("d2key=${bot.client.wLoginSigInfo.d2Key.toUHexString()}")
+       // println("d2key=${bot.client.wLoginSigInfo.d2Key.toUHexString()}")
         StatSvc.Register(bot.client).sendAndExpect<StatSvc.Register.Response>(6000)
     }
 
     override suspend fun init() {
-        //  delay(5000)
         MessageSvc.PbGetMsg(bot.client, MsgSvc.SyncFlag.START, currentTimeSeconds).sendWithoutExpect()
 
         this@QQAndroidBotNetworkHandler.subscribeAlways<ForceOfflineEvent> {
@@ -122,6 +121,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
         //val msg = MessageSvc.PbGetMsg(bot.client, MsgSvc.SyncFlag.START, currentTimeSeconds).sendAndExpect<MessageSvc.PbGetMsg.Response>()
         //println(msg.contentToString())
 
+
+        val startTime = currentTimeMillis
         try {
             bot.logger.info("开始加载好友信息")
             var currentFriendCount = 0
@@ -146,13 +147,15 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
                 if (currentFriendCount >= totalFriendCount) {
                     break
                 }
-                delay(200)
+                // delay(200)
             }
             bot.logger.info("好友列表加载完成, 共 ${currentFriendCount}个")
         } catch (e: Exception) {
             bot.logger.info("加载好友列表失败|一般这是由于加载过于频繁导致/将以热加载方式加载好友列表")
         }
 
+        val friendLoadFinish = currentTimeMillis
+        val groupInfo = mutableMapOf<Long, Int>()
         try {
             bot.logger.info("开始加载群组列表与群成员列表")
             val troopData = FriendList.GetTroopListSimplify(
@@ -185,16 +188,41 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
             toGet.forEach {
                 try {
                     getTroopMemberList(it.key, it.value, it.key.owner.id)
+                    groupInfo[it.key.groupCode] = it.value.size
                 } catch (e: Exception) {
+                    groupInfo[it.key.groupCode] = -1
                     bot.logger.info("群${it.key.groupCode}的列表拉取失败, 将采用动态加入")
                 }
-                delay(200)
+                //delay(200)
             }
             bot.logger.info("群组列表与群成员加载完成, 共 ${troopData.groups.size}个")
         } catch (e: Exception) {
             bot.logger.info("加载组信息失败|一般这是由于加载过于频繁导致/将以热加载方式加载群列表")
         }
 
+        //===log===//
+        fun fillUntil9(long: Number): String {
+            val x = long.toString()
+            return " ".repeat(
+                if (9 - x.length > 0) {
+                    9 - x.length
+                } else {
+                    0
+                }
+            ) + x
+        }
+
+        bot.logger.info("====================Mirai Bot List初始化完毕====================")
+        bot.logger.info("好友数量: ${fillUntil9(bot.qqs.size)}\t\t\t 加载时间: ${friendLoadFinish - startTime}ms")
+        bot.logger.info("加入群组: ${fillUntil9(bot.groups.size)}\t\t\t 加载时间: ${currentTimeMillis - friendLoadFinish}ms")
+        groupInfo.forEach {
+            if (it.value == -1) {
+                bot.logger.error("群组号码: ${fillUntil9(it.key)}\t\t\t 成员数量加载失败")
+            } else {
+                bot.logger.info("群组号码: ${fillUntil9(it.key)}\t\t\t 成员数量: ${it.value}")
+            }
+        }
+        bot.logger.info("====================Mirai Bot List初始化完毕====================")
     }
 
     suspend fun getTroopMemberList(group: GroupImpl, list: ContactList<Member>, owner: Long): ContactList<Member> {