Commit 1a0f0240 authored by Him188's avatar Him188

LoginError parsing

parent a1000b14
...@@ -11,8 +11,7 @@ import net.mamoe.mirai.qqandroid.event.PacketReceivedEvent ...@@ -11,8 +11,7 @@ import net.mamoe.mirai.qqandroid.event.PacketReceivedEvent
import net.mamoe.mirai.qqandroid.network.protocol.packet.KnownPacketFactories import net.mamoe.mirai.qqandroid.network.protocol.packet.KnownPacketFactories
import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket.LoginPacketResponse.Captcha import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket.LoginPacketResponse.*
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.LoginPacket.LoginPacketResponse.Success
import net.mamoe.mirai.qqandroid.network.protocol.packet.login.SvcReqRegisterPacket import net.mamoe.mirai.qqandroid.network.protocol.packet.login.SvcReqRegisterPacket
import net.mamoe.mirai.utils.* import net.mamoe.mirai.utils.*
import net.mamoe.mirai.utils.io.* import net.mamoe.mirai.utils.io.*
...@@ -31,7 +30,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -31,7 +30,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
launch(CoroutineName("Incoming Packet Receiver")) { processReceive() } launch(CoroutineName("Incoming Packet Receiver")) { processReceive() }
bot.logger.info("Trying login") bot.logger.info("Trying login")
when (val response = LoginPacket.SubCommand9(bot.client).sendAndExpect<LoginPacket.LoginPacketResponse>()) { when (val response: LoginPacket.LoginPacketResponse = LoginPacket.SubCommand9(bot.client).sendAndExpect()) {
is Captcha -> when (response) { is Captcha -> when (response) {
is Captcha.Picture -> { is Captcha.Picture -> {
bot.logger.info("需要图片验证码") bot.logger.info("需要图片验证码")
...@@ -41,6 +40,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -41,6 +40,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
} }
} }
is Error -> error(response.toString())
is Success -> { is Success -> {
bot.logger.info("Login successful") bot.logger.info("Login successful")
} }
...@@ -207,10 +208,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -207,10 +208,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
suspend fun <E : Packet> OutgoingPacket.sendAndExpect(): E { suspend fun <E : Packet> OutgoingPacket.sendAndExpect(): E {
val handler = PacketListener(commandName = commandName, sequenceId = sequenceId) val handler = PacketListener(commandName = commandName, sequenceId = sequenceId)
packetListeners.addLast(handler) packetListeners.addLast(handler)
//println(delegate.readBytes().toUHexString()) channel.send(delegate)
println("Sending length=" + delegate.remaining)
channel.send(delegate)//) { packetListeners.remove(handler); "Cannot send packet" }
println("Packet sent")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return handler.await() as E return handler.await() as E
} }
......
...@@ -204,7 +204,7 @@ internal object LoginPacket : PacketFactory<LoginPacket.LoginPacketResponse>("wt ...@@ -204,7 +204,7 @@ internal object LoginPacket : PacketFactory<LoginPacket.LoginPacketResponse>("wt
val type = readByte() val type = readByte()
println("type=$type") println("type=$type")
debugDiscardExact(2) discardExact(2)
val tlvMap: Map<Int, ByteArray> = this.readTLVMap() val tlvMap: Map<Int, ByteArray> = this.readTLVMap()
return when (type.toInt()) { return when (type.toInt()) {
0 -> onLoginSuccess(tlvMap, bot) 0 -> onLoginSuccess(tlvMap, bot)
......
...@@ -28,7 +28,7 @@ abstract class BotImpl<N : BotNetworkHandler> constructor( ...@@ -28,7 +28,7 @@ abstract class BotImpl<N : BotNetworkHandler> constructor(
@UseExperimental(MiraiExperimentalAPI::class) @UseExperimental(MiraiExperimentalAPI::class)
final override val uin: Long final override val uin: Long
get() = account.id get() = account.id
final override val logger: MiraiLogger = configuration.logger ?: DefaultLogger("Bot($uin)") final override val logger: MiraiLogger = configuration.logger ?: DefaultLogger("Bot($uin)").also { configuration.logger = it }
init { init {
@Suppress("LeakingThis") @Suppress("LeakingThis")
......
...@@ -4,7 +4,6 @@ import kotlinx.io.core.IoBuffer ...@@ -4,7 +4,6 @@ import kotlinx.io.core.IoBuffer
import net.mamoe.mirai.Bot import net.mamoe.mirai.Bot
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.EmptyCoroutineContext
import kotlin.coroutines.coroutineContext
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
/** /**
...@@ -26,7 +25,7 @@ class BotConfiguration { ...@@ -26,7 +25,7 @@ class BotConfiguration {
/** /**
* 日志记录器 * 日志记录器
*/ */
var logger: PlatformLogger? = null var logger: MiraiLogger? = null
/** /**
* 父 [CoroutineContext] * 父 [CoroutineContext]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment