Mirai Console Fix

This commit is contained in:
jiahua.liu 2020-02-16 22:01:48 +08:00
parent bb244a8ee4
commit 13460b93b6

View File

@ -117,7 +117,8 @@ object MiraiConsoleTerminalUI : MiraiConsoleUI {
} }
} }
pushLog(0, "[Login Solver]请输入 4 位字母验证码. 若要更换验证码, 请直接回车") pushLog(0, "[Login Solver]请输入 4 位字母验证码. 若要更换验证码, 请直接回车")
return requestInput("[Login Solver]请输入 4 位字母验证码. 若要更换验证码, 请直接回车")!!.takeUnless { it.isEmpty() || it.length != 4 } return requestInput("[Login Solver]请输入 4 位字母验证码. 若要更换验证码, 请直接回车")!!
.takeUnless { it.isEmpty() || it.length != 4 }
.also { .also {
pushLog(0, "[Login Solver]正在提交[$it]中...") pushLog(0, "[Login Solver]正在提交[$it]中...")
} }
@ -133,7 +134,6 @@ object MiraiConsoleTerminalUI : MiraiConsoleUI {
} }
} }
override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? { override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? {
pushLog(0, "[Login Solver]需要进行账户安全认证") pushLog(0, "[Login Solver]需要进行账户安全认证")
pushLog(0, "[Login Solver]该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题") pushLog(0, "[Login Solver]该账户有[设备锁]/[不常用登陆地点]/[不常用设备登陆]的问题")
@ -235,13 +235,17 @@ object MiraiConsoleTerminalUI : MiraiConsoleUI {
var lastJob: Job? = null var lastJob: Job? = null
terminal.addResizeListener(TerminalResizeListener { terminal1: Terminal, newSize: TerminalSize -> terminal.addResizeListener(TerminalResizeListener { terminal1: Terminal, newSize: TerminalSize ->
lastJob = GlobalScope.launch { lastJob = GlobalScope.launch {
delay(300) try {
if (lastJob == coroutineContext[Job]) { delay(300)
terminal.clearScreen() if (lastJob == coroutineContext[Job]) {
//inited = false terminal.clearScreen()
update() //inited = false
redrawCommand() update()
redrawLogs(log[screens[currentScreenId]]!!) redrawCommand()
redrawLogs(log[screens[currentScreenId]]!!)
}
} catch (e: Exception) {
pushLog(0, "[UI ERROR] ${e.message}")
} }
} }
}) })
@ -264,45 +268,53 @@ object MiraiConsoleTerminalUI : MiraiConsoleUI {
System.setErr(System.out) System.setErr(System.out)
update() try {
update()
} catch (e: Exception) {
pushLog(0, "[UI ERROR] ${e.message}")
}
val charList = listOf(',', '.', '/', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '=', '+', '!', ' ') val charList = listOf(',', '.', '/', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '=', '+', '!', ' ')
thread { thread {
while (true) { while (true) {
var keyStroke: KeyStroke = terminal.readInput() try {
var keyStroke: KeyStroke = terminal.readInput()
when (keyStroke.keyType) { when (keyStroke.keyType) {
KeyType.ArrowLeft -> { KeyType.ArrowLeft -> {
currentScreenId = currentScreenId =
getLeftScreenId() getLeftScreenId()
clearRows(2) clearRows(2)
cleanPage() cleanPage()
update() update()
} }
KeyType.ArrowRight -> { KeyType.ArrowRight -> {
currentScreenId = currentScreenId =
getRightScreenId() getRightScreenId()
clearRows(2) clearRows(2)
cleanPage() cleanPage()
update() update()
} }
KeyType.Enter -> { KeyType.Enter -> {
provideInput(commandBuilder.toString()) provideInput(commandBuilder.toString())
emptyCommand() emptyCommand()
} }
KeyType.Escape -> { KeyType.Escape -> {
exitProcess(0) exitProcess(0)
} }
else -> { else -> {
if (keyStroke.character != null) { if (keyStroke.character != null) {
if (keyStroke.character.toInt() == 8) { if (keyStroke.character.toInt() == 8) {
deleteCommandChar() deleteCommandChar()
} }
if (keyStroke.character.isLetterOrDigit() || charList.contains(keyStroke.character)) { if (keyStroke.character.isLetterOrDigit() || charList.contains(keyStroke.character)) {
addCommandChar(keyStroke.character) addCommandChar(keyStroke.character)
}
} }
} }
} }
} catch (e: Exception) {
pushLog(0, "[UI ERROR] ${e.message}")
} }
} }
} }
@ -542,13 +554,17 @@ object MiraiConsoleTerminalUI : MiraiConsoleUI {
terminal.flush() terminal.flush()
} else { } else {
lastEmpty = GlobalScope.launch { lastEmpty = GlobalScope.launch {
delay(100) try {
if (lastEmpty == coroutineContext[Job]) { delay(100)
terminal.clearScreen() if (lastEmpty == coroutineContext[Job]) {
//inited = false terminal.clearScreen()
update() //inited = false
redrawCommand() update()
redrawLogs(log[screens[currentScreenId]]!!) redrawCommand()
redrawLogs(log[screens[currentScreenId]]!!)
}
} catch (e: Exception) {
pushLog(0, "[UI ERROR] ${e.message}")
} }
} }
} }