mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-08-08 05:11:12 +00:00
[hotfix] make listener and messageHandler nullable; add null-safe checks.
This commit is contained in:
@@ -204,10 +204,10 @@ class UserHandler(
|
|||||||
private var user: User,
|
private var user: User,
|
||||||
var streamStartTime: LocalDateTime?,
|
var streamStartTime: LocalDateTime?,
|
||||||
) {
|
) {
|
||||||
lateinit var messageHandler: MessageHandler
|
|
||||||
lateinit var client: ChzzkClient
|
lateinit var client: ChzzkClient
|
||||||
lateinit var listener: ChzzkUserSession
|
|
||||||
lateinit var chatChannelId: String
|
lateinit var chatChannelId: String
|
||||||
|
var listener: ChzzkUserSession? = null
|
||||||
|
var messageHandler: MessageHandler? = null
|
||||||
|
|
||||||
private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java)
|
private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java)
|
||||||
private var _isActive: Boolean
|
private var _isActive: Boolean
|
||||||
@@ -233,14 +233,10 @@ class UserHandler(
|
|||||||
|
|
||||||
client.loginAsync().await()
|
client.loginAsync().await()
|
||||||
listener = ChzzkSessionBuilder(client).buildUserSession()
|
listener = ChzzkSessionBuilder(client).buildUserSession()
|
||||||
listener.createAndConnectAsync().await()
|
listener?.createAndConnectAsync()?.await()
|
||||||
|
|
||||||
delay(1000L)
|
delay(1000L)
|
||||||
|
|
||||||
listener.on(SessionChatMessageEvent::class.java) {
|
|
||||||
messageHandler.handle(it.message, user)
|
|
||||||
}
|
|
||||||
|
|
||||||
val timer = TimerConfigService.getConfig(user)
|
val timer = TimerConfigService.getConfig(user)
|
||||||
if (timer?.option == TimerType.UPTIME.value)
|
if (timer?.option == TimerType.UPTIME.value)
|
||||||
dispatcher.post(
|
dispatcher.post(
|
||||||
@@ -259,15 +255,23 @@ class UserHandler(
|
|||||||
)
|
)
|
||||||
|
|
||||||
messageHandler = MessageHandler(this@UserHandler)
|
messageHandler = MessageHandler(this@UserHandler)
|
||||||
|
listener?.on(SessionChatMessageEvent::class.java) {
|
||||||
|
messageHandler?.handle(it.message, user)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal suspend fun disable() {
|
internal suspend fun disable() {
|
||||||
listener.disconnectAsync().await()
|
listener?.unsubscribeAsync(ChzzkSessionSubscriptionType.CHAT)?.await()
|
||||||
|
listener?.disconnectAsync()?.await()
|
||||||
|
|
||||||
|
listener = null
|
||||||
|
messageHandler = null
|
||||||
|
|
||||||
_isActive = false
|
_isActive = false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun reloadCommand() {
|
internal fun reloadCommand() {
|
||||||
messageHandler.reloadCommand()
|
messageHandler?.reloadCommand()
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun reloadUser(user: User) {
|
internal fun reloadUser(user: User) {
|
||||||
@@ -287,8 +291,6 @@ class UserHandler(
|
|||||||
reloadUser(UserService.getUser(user.id.value)!!)
|
reloadUser(UserService.getUser(user.id.value)!!)
|
||||||
|
|
||||||
logger.info("ChzzkChat connecting... ${channel.channelName} - ${channel.channelId}")
|
logger.info("ChzzkChat connecting... ${channel.channelName} - ${channel.channelId}")
|
||||||
listener.subscribeAsync(ChzzkSessionSubscriptionType.CHAT).join()
|
|
||||||
|
|
||||||
streamStartTime = LocalDateTime.now()
|
streamStartTime = LocalDateTime.now()
|
||||||
|
|
||||||
if(!_isActive) {
|
if(!_isActive) {
|
||||||
@@ -323,7 +325,7 @@ class UserHandler(
|
|||||||
} else {
|
} else {
|
||||||
logger.info("${user.username} is offline.")
|
logger.info("${user.username} is offline.")
|
||||||
streamStartTime = null
|
streamStartTime = null
|
||||||
listener.disconnectAsync().join()
|
listener?.disconnectAsync()?.join()
|
||||||
_isActive = false
|
_isActive = false
|
||||||
|
|
||||||
CoroutineScope(Dispatchers.Default).launch {
|
CoroutineScope(Dispatchers.Default).launch {
|
||||||
|
Reference in New Issue
Block a user