/* * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ package net.mamoe.mirai.utils import net.mamoe.mirai.Bot import net.mamoe.mirai.network.LoginFailedException /** * 验证码, 设备锁解决器 */ public expect abstract class LoginSolver { /** * 处理图片验证码. * 返回 null 以表示无法处理验证码, 将会刷新验证码或重试登录. * 抛出一个 [LoginFailedException] 以正常地终止登录, 抛出任意其他 [Exception] 将视为异常终止 * * @throws LoginFailedException */ public abstract suspend fun onSolvePicCaptcha(bot: Bot, data: ByteArray): String? /** * 处理滑动验证码. * 返回 null 以表示无法处理验证码, 将会刷新验证码或重试登录. * 抛出一个 [LoginFailedException] 以正常地终止登录, 抛出任意其他 [Exception] 将视为异常终止 * * @throws LoginFailedException * @return 验证码解决成功后获得的 ticket. */ public abstract suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? /** * 处理不安全设备验证. * 在处理完成后返回任意内容 (包含 `null`) 均视为处理成功. * 抛出一个 [LoginFailedException] 以正常地终止登录, 抛出任意其他 [Exception] 将视为异常终止. * * @return 任意内容. 返回值保留以供未来更新. * @throws LoginFailedException */ public abstract suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? public companion object { public val Default: LoginSolver } }