mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-03 15:12:25 +08:00
Handle ConfigPushSvc.PushReq.PushReqResponse.ChangeServer in ConfigPushSvc
This commit is contained in:
parent
0780756bd4
commit
17c2069c82
@ -371,19 +371,8 @@ internal class QQAndroidBotNetworkHandler(coroutineContext: CoroutineContext, bo
|
|||||||
logger.info { "ConfigPushSvc.PushReq: Success." }
|
logger.info { "ConfigPushSvc.PushReq: Success." }
|
||||||
}
|
}
|
||||||
is ConfigPushSvc.PushReq.PushReqResponse.ChangeServer -> {
|
is ConfigPushSvc.PushReq.PushReqResponse.ChangeServer -> {
|
||||||
bot.logger.info { "Server requires reconnect." }
|
logger.info { "ConfigPushSvc.PushReq: Require reconnect" }
|
||||||
bot.logger.info { "Server list: ${resp.serverList.joinToString()}." }
|
// handled in ConfigPushSvc
|
||||||
|
|
||||||
if (resp.serverList.isNotEmpty()) {
|
|
||||||
bot.serverList.clear()
|
|
||||||
resp.serverList.shuffled().forEach {
|
|
||||||
bot.serverList.add(it.host to it.port)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bot.bdhSyncer.saveToCache()
|
|
||||||
bot.bdhSyncer.saveServerListToCache()
|
|
||||||
|
|
||||||
bot.launch { BotOfflineEvent.RequireReconnect(bot).broadcast() }
|
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,14 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.internal.network.protocol.packet.login
|
package net.mamoe.mirai.internal.network.protocol.packet.login
|
||||||
|
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.io.core.ByteReadPacket
|
import kotlinx.io.core.ByteReadPacket
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import net.mamoe.mirai.event.AbstractEvent
|
import net.mamoe.mirai.event.AbstractEvent
|
||||||
import net.mamoe.mirai.event.Event
|
import net.mamoe.mirai.event.Event
|
||||||
|
import net.mamoe.mirai.event.broadcast
|
||||||
|
import net.mamoe.mirai.event.events.BotOfflineEvent
|
||||||
import net.mamoe.mirai.internal.QQAndroidBot
|
import net.mamoe.mirai.internal.QQAndroidBot
|
||||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||||
import net.mamoe.mirai.internal.network.BdhSession
|
import net.mamoe.mirai.internal.network.BdhSession
|
||||||
@ -30,6 +34,7 @@ import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
|||||||
import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket
|
import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket
|
||||||
import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId
|
import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId
|
||||||
import net.mamoe.mirai.internal.utils.io.serialization.writeJceStruct
|
import net.mamoe.mirai.internal.utils.io.serialization.writeJceStruct
|
||||||
|
import net.mamoe.mirai.utils.info
|
||||||
import net.mamoe.mirai.utils.toUHexString
|
import net.mamoe.mirai.utils.toUHexString
|
||||||
import java.lang.IllegalStateException
|
import java.lang.IllegalStateException
|
||||||
import net.mamoe.mirai.internal.network.protocol.data.jce.PushReq as PushReqJceStruct
|
import net.mamoe.mirai.internal.network.protocol.data.jce.PushReq as PushReqJceStruct
|
||||||
@ -144,6 +149,25 @@ internal class ConfigPushSvc {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun handleRequireReconnect(resp: PushReqResponse.ChangeServer) {
|
||||||
|
bot.logger.info { "Server requires reconnect." }
|
||||||
|
bot.logger.info { "Server list: ${resp.serverList.joinToString()}." }
|
||||||
|
|
||||||
|
if (resp.serverList.isNotEmpty()) {
|
||||||
|
bot.serverList.clear()
|
||||||
|
resp.serverList.shuffled().forEach {
|
||||||
|
bot.serverList.add(it.host to it.port)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bot.bdhSyncer.saveToCache()
|
||||||
|
bot.bdhSyncer.saveServerListToCache()
|
||||||
|
|
||||||
|
bot.launch {
|
||||||
|
delay(1000)
|
||||||
|
BotOfflineEvent.RequireReconnect(bot).broadcast()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
when (packet) {
|
when (packet) {
|
||||||
is PushReqResponse.Success -> {
|
is PushReqResponse.Success -> {
|
||||||
handleSuccess(packet)
|
handleSuccess(packet)
|
||||||
@ -172,6 +196,10 @@ internal class ConfigPushSvc {
|
|||||||
// writePacket(this.build().debugPrintThis())
|
// writePacket(this.build().debugPrintThis())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
is PushReqResponse.ChangeServer -> {
|
||||||
|
handleRequireReconnect(packet)
|
||||||
|
return null
|
||||||
|
}
|
||||||
else -> {
|
else -> {
|
||||||
// handled in QQABot
|
// handled in QQABot
|
||||||
return null
|
return null
|
||||||
|
Loading…
Reference in New Issue
Block a user