Commit 505943cb authored by Him188's avatar Him188

Handle SMS login

parent 30303c04
...@@ -23,6 +23,7 @@ import net.mamoe.mirai.event.events.BotOnlineEvent ...@@ -23,6 +23,7 @@ import net.mamoe.mirai.event.events.BotOnlineEvent
import net.mamoe.mirai.message.FriendMessage import net.mamoe.mirai.message.FriendMessage
import net.mamoe.mirai.message.GroupMessage import net.mamoe.mirai.message.GroupMessage
import net.mamoe.mirai.network.BotNetworkHandler import net.mamoe.mirai.network.BotNetworkHandler
import net.mamoe.mirai.network.UnsupportedSMSLoginException
import net.mamoe.mirai.network.WrongPasswordException import net.mamoe.mirai.network.WrongPasswordException
import net.mamoe.mirai.qqandroid.QQAndroidBot import net.mamoe.mirai.qqandroid.QQAndroidBot
import net.mamoe.mirai.qqandroid.contact.FriendInfoImpl import net.mamoe.mirai.qqandroid.contact.FriendInfoImpl
...@@ -105,6 +106,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -105,6 +106,7 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
}.also { heartbeatJob = it } }.also { heartbeatJob = it }
} }
@OptIn(MiraiExperimentalAPI::class)
override suspend fun relogin(cause: Throwable?) { override suspend fun relogin(cause: Throwable?) {
heartbeatJob?.cancel(CancellationException("relogin", cause)) heartbeatJob?.cancel(CancellationException("relogin", cause))
heartbeatJob?.join() heartbeatJob?.join()
...@@ -163,9 +165,15 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ...@@ -163,9 +165,15 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
} }
is WtLogin.Login.LoginPacketResponse.Success -> { is WtLogin.Login.LoginPacketResponse.Success -> {
logger.info("Login successful") logger.info { "Login successful" }
break@mainloop 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 ...@@ -600,7 +608,8 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler
internal val packetListeners = LockFreeLinkedList<PacketListener>() internal val packetListeners = LockFreeLinkedList<PacketListener>()
@PublishedApi @PublishedApi
internal inner class PacketListener( // callback internal inner class PacketListener(
// callback
val commandName: String, val commandName: String,
val sequenceId: Int val sequenceId: Int
) : CompletableDeferred<Packet?> by CompletableDeferred(supervisor) { ) : CompletableDeferred<Packet?> by CompletableDeferred(supervisor) {
......
...@@ -300,7 +300,7 @@ internal class WtLogin { ...@@ -300,7 +300,7 @@ internal class WtLogin {
class SMSVerifyCodeNeeded(val t402: ByteArray, val t403: ByteArray) : LoginPacketResponse() { class SMSVerifyCodeNeeded(val t402: ByteArray, val t403: ByteArray) : LoginPacketResponse() {
override fun toString(): String { override fun toString(): String {
return "LoginPacketResponse.SMSVerifyCodeNeeded" return "LoginPacketResponse.SMSVerifyCodeNeeded(t402=${t402.toUHexString()}, t403=${t403.toUHexString()})"
} }
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
package net.mamoe.mirai.network package net.mamoe.mirai.network
import net.mamoe.mirai.Bot import net.mamoe.mirai.Bot
import net.mamoe.mirai.utils.MiraiExperimentalAPI
/** /**
* 在 [登录][Bot.login] 失败时抛出, 可正常地中断登录过程. * 在 [登录][Bot.login] 失败时抛出, 可正常地中断登录过程.
...@@ -28,6 +29,12 @@ sealed class LoginFailedException : RuntimeException { ...@@ -28,6 +29,12 @@ sealed class LoginFailedException : RuntimeException {
*/ */
class WrongPasswordException(message: String?) : LoginFailedException(message) class WrongPasswordException(message: String?) : LoginFailedException(message)
/**
* 需要短信验证时抛出. mirai 目前还不支持短信验证.
*/
@MiraiExperimentalAPI
class UnsupportedSMSLoginException(message: String?) : LoginFailedException(message)
/** /**
* 非 mirai 实现的异常 * 非 mirai 实现的异常
*/ */
......
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