mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-26 07:20:09 +08:00
Handle SMS login
This commit is contained in:
parent
30303c0473
commit
505943cb3d
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network
@ -23,6 +23,7 @@ import net.mamoe.mirai.event.events.BotOnlineEvent
|
||||
import net.mamoe.mirai.message.FriendMessage
|
||||
import net.mamoe.mirai.message.GroupMessage
|
||||
import net.mamoe.mirai.network.BotNetworkHandler
|
||||
import net.mamoe.mirai.network.UnsupportedSMSLoginException
|
||||
import net.mamoe.mirai.network.WrongPasswordException
|
||||
import net.mamoe.mirai.qqandroid.QQAndroidBot
|
||||
import net.mamoe.mirai.qqandroid.contact.FriendInfoImpl
|
||||
@ -105,6 +106,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
}.also { heartbeatJob = it }
|
||||
}
|
||||
|
||||
@OptIn(MiraiExperimentalAPI::class)
|
||||
override suspend fun relogin(cause: Throwable?) {
|
||||
heartbeatJob?.cancel(CancellationException("relogin", cause))
|
||||
heartbeatJob?.join()
|
||||
@ -163,9 +165,15 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
}
|
||||
|
||||
is WtLogin.Login.LoginPacketResponse.Success -> {
|
||||
logger.info("Login successful")
|
||||
logger.info { "Login successful" }
|
||||
break@mainloop
|
||||
}
|
||||
|
||||
is WtLogin.Login.LoginPacketResponse.SMSVerifyCodeNeeded -> {
|
||||
val message = "SMS required: $response, which isn't yet supported"
|
||||
logger.error(message)
|
||||
throw UnsupportedSMSLoginException(message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -600,7 +608,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
|
||||
internal val packetListeners = LockFreeLinkedList<PacketListener>()
|
||||
|
||||
@PublishedApi
|
||||
internal inner class PacketListener( // callback
|
||||
internal inner class PacketListener(
|
||||
// callback
|
||||
val commandName: String,
|
||||
val sequenceId: Int
|
||||
) : CompletableDeferred<Packet?> by CompletableDeferred(supervisor) {
|
||||
|
@ -300,7 +300,7 @@ internal class WtLogin {
|
||||
|
||||
class SMSVerifyCodeNeeded(val t402: ByteArray, val t403: ByteArray) : LoginPacketResponse() {
|
||||
override fun toString(): String {
|
||||
return "LoginPacketResponse.SMSVerifyCodeNeeded"
|
||||
return "LoginPacketResponse.SMSVerifyCodeNeeded(t402=${t402.toUHexString()}, t403=${t403.toUHexString()})"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
package net.mamoe.mirai.network
|
||||
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.utils.MiraiExperimentalAPI
|
||||
|
||||
/**
|
||||
* 在 [登录][Bot.login] 失败时抛出, 可正常地中断登录过程.
|
||||
@ -28,6 +29,12 @@ sealed class LoginFailedException : RuntimeException {
|
||||
*/
|
||||
class WrongPasswordException(message: String?) : LoginFailedException(message)
|
||||
|
||||
/**
|
||||
* 需要短信验证时抛出. mirai 目前还不支持短信验证.
|
||||
*/
|
||||
@MiraiExperimentalAPI
|
||||
class UnsupportedSMSLoginException(message: String?) : LoginFailedException(message)
|
||||
|
||||
/**
|
||||
* 非 mirai 实现的异常
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user