diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt index 61c0c9b73..62df4dc71 100644 --- a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt +++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/MiraiConsole.kt @@ -127,9 +127,17 @@ object MiraiConsole { override suspend fun read(question: String): String? { return frontEnd.requestInput(question) } - }) + }, + SimpleLogger("Login Helper") { _, message, e -> + logger("[Login Helper]", qqNumber, message) + if (e != null) { + logger("[NETWORK ERROR]", qqNumber, e.toString())//因为在一页 所以可以不打QQ + e.printStackTrace() + } + } + ) this.botLoggerSupplier = { - SimpleLogger("BOT $qqNumber") { _, message, e -> + SimpleLogger("BOT $qqNumber]") { _, message, e -> logger("[BOT $qqNumber]", qqNumber, message) if (e != null) { logger("[NETWORK ERROR]", qqNumber, e.toString())//因为在一页 所以可以不打QQ diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt index 84dbec29e..736e1f6a6 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfigurationJvm.kt @@ -53,54 +53,65 @@ class DefaultLoginSolverInputReader: LoginSolverInputReader{ } class DefaultLoginSolver( - val reader: LoginSolverInputReader = DefaultLoginSolverInputReader() + val reader: LoginSolverInputReader = DefaultLoginSolverInputReader(), + val overrideLogger:MiraiLogger? = null ) : LoginSolver() { + fun getLogger(bot: Bot):MiraiLogger{ + if(overrideLogger!=null){ + return overrideLogger + } + return bot.logger + } + override suspend fun onSolvePicCaptcha(bot: Bot, data: IoBuffer): String? = loginSolverLock.withLock { + val logger = getLogger(bot) val tempFile: File = createTempFile(suffix = ".png").apply { deleteOnExit() } withContext(Dispatchers.IO) { tempFile.createNewFile() - bot.logger.info("需要图片验证码登录, 验证码为 4 字母") + logger.info("需要图片验证码登录, 验证码为 4 字母") try { tempFile.writeChannel().apply { writeFully(data); close() } - bot.logger.info("将会显示字符图片. 若看不清字符图片, 请查看文件 ${tempFile.absolutePath}") + logger.info("将会显示字符图片. 若看不清字符图片, 请查看文件 ${tempFile.absolutePath}") } catch (e: Exception) { - bot.logger.info("无法写出验证码文件(${e.message}), 请尝试查看以上字符图片") + logger.info("无法写出验证码文件(${e.message}), 请尝试查看以上字符图片") } tempFile.inputStream().use { val img = ImageIO.read(it) if (img == null) { - bot.logger.info("无法创建字符图片. 请查看文件") + logger.info("无法创建字符图片. 请查看文件") } else { - bot.logger.info(img.createCharImg()) + logger.info(img.createCharImg()) } } } - bot.logger.info("请输入 4 位字母验证码. 若要更换验证码, 请直接回车") + logger.info("请输入 4 位字母验证码. 若要更换验证码, 请直接回车") return reader("请输入 4 位字母验证码. 若要更换验证码, 请直接回车")!!.takeUnless { it.isEmpty() || it.length != 4 }.also { - bot.logger.info("正在提交[$it]中...") + logger.info("正在提交[$it]中...") } } override suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? = loginSolverLock.withLock { - bot.logger.info("需要滑动验证码") - bot.logger.info("请在任意浏览器中打开以下链接并完成验证码. ") - bot.logger.info("完成后请输入任意字符 ") - bot.logger.info(url) + val logger = getLogger(bot) + logger.info("需要滑动验证码") + logger.info("请在任意浏览器中打开以下链接并完成验证码. ") + logger.info("完成后请输入任意字符 ") + logger.info(url) return reader("完成后请输入任意字符").also { - bot.logger.info("正在提交中...") + logger.info("正在提交中...") } } override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? = loginSolverLock.withLock { - bot.logger.info("需要进行账户安全认证") - bot.logger.info("该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题") - bot.logger.info("完成以下账号认证即可成功登陆|理论本认证在mirai每个账户中最多出现1次") - bot.logger.info("请将该链接在QQ浏览器中打开并完成认证, 成功后输入任意字符") - bot.logger.info("这步操作将在后续的版本中优化") - bot.logger.info(url) + val logger = getLogger(bot) + logger.info("需要进行账户安全认证") + logger.info("该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题") + logger.info("完成以下账号认证即可成功登陆|理论本认证在mirai每个账户中最多出现1次") + logger.info("请将该链接在QQ浏览器中打开并完成认证, 成功后输入任意字符") + logger.info("这步操作将在后续的版本中优化") + logger.info(url) return reader("完成后请输入任意字符").also { - bot.logger.info("正在提交中...") + logger.info("正在提交中...") } }