From a88f994ccdbaad8b81b25bdcdd2183cd3c2c891b Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Sun, 8 Jun 2025 15:10:41 +0900 Subject: [PATCH] [hotfix] coroutine related fixed. --- .../chzzk_bot/chatbot/chzzk/ChzzkHandler.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt b/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt index c9f2058..4584313 100644 --- a/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt +++ b/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt @@ -6,6 +6,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import org.koin.java.KoinJavaComponent.inject import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -223,13 +224,13 @@ class UserHandler( throw RuntimeException("AccessToken or RefreshToken is not valid.") } try { - connect() + CoroutineScope(Dispatchers.Default).launch { + connect() - listener.on(SessionChatMessageEvent::class.java) { - messageHandler.handle(it.message, user) - } + listener.on(SessionChatMessageEvent::class.java) { + messageHandler.handle(it.message, user) + } - GlobalScope.launch { val timer = TimerConfigService.getConfig(user) if (timer?.option == TimerType.UPTIME.value) dispatcher.post( @@ -247,14 +248,13 @@ class UserHandler( ) ) } - } catch(e: Exception) { logger.error("Exception(${user.username}): ${e.stackTraceToString()}") throw RuntimeException("Exception: ${e.stackTraceToString()}") } } - private fun connect() { + private suspend fun connect() = runBlocking { val tokens = user.refreshToken?.let { token -> Connector.client.refreshAccessToken(token)} if(tokens == null) { throw RuntimeException("AccessToken is not valid.") @@ -287,9 +287,9 @@ class UserHandler( internal fun isActive(value: Boolean, status: ChzzkLiveDetail) { if(value) { - connect() - CoroutineScope(Dispatchers.Default).launch { + connect() + logger.info("${user.username} is live.") reloadUser(UserService.getUser(user.id.value)!!)