mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-06-09 07:18:22 +00:00
add TimerConfig.kt, TimerConfigService
This commit is contained in:
parent
55f6f5f94d
commit
f7c68a56bc
@ -13,6 +13,7 @@ import space.mori.chzzk_bot.common.events.CoroutinesEventBus
|
||||
import space.mori.chzzk_bot.common.events.TimerEvent
|
||||
import space.mori.chzzk_bot.common.events.TimerType
|
||||
import space.mori.chzzk_bot.common.models.User
|
||||
import space.mori.chzzk_bot.common.services.TimerConfigService
|
||||
import space.mori.chzzk_bot.common.services.UserService
|
||||
import space.mori.chzzk_bot.common.utils.convertChzzkDateToLocalDateTime
|
||||
import space.mori.chzzk_bot.common.utils.getUptime
|
||||
@ -152,11 +153,19 @@ class UserHandler(
|
||||
streamStartTime = convertChzzkDateToLocalDateTime(status.content.openDate)
|
||||
|
||||
CoroutineScope(Dispatchers.Default).launch {
|
||||
dispatcher.post(TimerEvent(
|
||||
channel.channelId,
|
||||
TimerType.UPTIME,
|
||||
getUptime(streamStartTime!!)
|
||||
))
|
||||
when(TimerConfigService.getConfig(UserService.getUser(channel.channelId)!!)?.option) {
|
||||
TimerType.UPTIME.value -> dispatcher.post(TimerEvent(
|
||||
channel.channelId,
|
||||
TimerType.UPTIME,
|
||||
getUptime(streamStartTime!!)
|
||||
))
|
||||
else -> dispatcher.post(TimerEvent(
|
||||
channel.channelId,
|
||||
TimerType.REMOVE,
|
||||
""
|
||||
))
|
||||
}
|
||||
|
||||
delay(5000L)
|
||||
listener.sendChat("${user.username} 님! 오늘도 열심히 방송하세요!")
|
||||
Discord.sendDiscord(user, status)
|
||||
|
@ -10,6 +10,7 @@ import space.mori.chzzk_bot.common.events.TimerType
|
||||
import space.mori.chzzk_bot.common.models.User
|
||||
import space.mori.chzzk_bot.common.services.CommandService
|
||||
import space.mori.chzzk_bot.common.services.CounterService
|
||||
import space.mori.chzzk_bot.common.services.TimerConfigService
|
||||
import space.mori.chzzk_bot.common.services.UserService
|
||||
import space.mori.chzzk_bot.common.utils.getUptime
|
||||
import xyz.r2turntrue.chzzk4j.chat.ChatMessage
|
||||
@ -125,7 +126,7 @@ class MessageHandler(
|
||||
return
|
||||
}
|
||||
|
||||
val parts = msg.content.split(" ", limit = 2)
|
||||
val parts = msg.content.split(" ", limit = 3)
|
||||
if (parts.size < 2) {
|
||||
listener.sendChat("타이머 명령어 형식을 잘 찾아봐주세요!")
|
||||
return
|
||||
@ -152,6 +153,19 @@ class MessageHandler(
|
||||
dispatcher.post(TimerEvent(user.token, TimerType.REMOVE, ""))
|
||||
}
|
||||
}
|
||||
"설정" -> {
|
||||
when (parts[2]) {
|
||||
"업타임" -> {
|
||||
TimerConfigService.saveOrUpdateConfig(user, TimerType.UPTIME)
|
||||
listener.sendChat("기본 타이머 설정이 업타임으로 바뀌었습니다.")
|
||||
}
|
||||
"삭제" -> {
|
||||
TimerConfigService.saveOrUpdateConfig(user, TimerType.REMOVE)
|
||||
listener.sendChat("기본 타이머 설정이 삭제로 바뀌었습니다.")
|
||||
}
|
||||
else -> listener.sendChat("!타이머 설정 (업타임/삭제) 형식으로 써주세요!")
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
logger.debug("${user.token} / 그외")
|
||||
try {
|
||||
|
@ -0,0 +1,18 @@
|
||||
package space.mori.chzzk_bot.common.models
|
||||
|
||||
import org.jetbrains.exposed.dao.IntEntity
|
||||
import org.jetbrains.exposed.dao.IntEntityClass
|
||||
import org.jetbrains.exposed.dao.id.EntityID
|
||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||
import org.jetbrains.exposed.sql.ReferenceOption
|
||||
|
||||
object TimerConfigs: IntIdTable("timer_config") {
|
||||
val user = reference("user", Users, onDelete = ReferenceOption.CASCADE)
|
||||
val option = integer("option")
|
||||
}
|
||||
class TimerConfig(id: EntityID<Int>) : IntEntity(id) {
|
||||
companion object : IntEntityClass<TimerConfig>(TimerConfigs)
|
||||
|
||||
var user by User referencedOn TimerConfigs.user
|
||||
var option by TimerConfigs.option
|
||||
}
|
@ -11,7 +11,7 @@ import space.mori.chzzk_bot.common.models.User
|
||||
object CommandService {
|
||||
fun saveCommand(user: User, command: String, content: String, failContent: String): Command {
|
||||
return transaction {
|
||||
return@transaction Command.new {
|
||||
Command.new {
|
||||
this.user = user
|
||||
this.command = command
|
||||
this.content = content
|
||||
|
@ -0,0 +1,48 @@
|
||||
package space.mori.chzzk_bot.common.services
|
||||
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
import org.jetbrains.exposed.sql.update
|
||||
import space.mori.chzzk_bot.common.events.TimerType
|
||||
import space.mori.chzzk_bot.common.models.TimerConfig
|
||||
import space.mori.chzzk_bot.common.models.TimerConfigs
|
||||
import space.mori.chzzk_bot.common.models.User
|
||||
|
||||
object TimerConfigService {
|
||||
fun saveConfig(user: User, timerConfig: TimerType) {
|
||||
return transaction {
|
||||
TimerConfig.new {
|
||||
this.user = user
|
||||
this.option = timerConfig.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun updateConfig(user: User, timerConfig: TimerType) {
|
||||
return transaction {
|
||||
val updated = TimerConfigs.update({
|
||||
TimerConfigs.user eq user.id
|
||||
}) {
|
||||
it[option] = timerConfig.value
|
||||
}
|
||||
|
||||
if (updated == 0) throw RuntimeException("TimerConfig not found! ${user.username}")
|
||||
|
||||
TimerConfig.find { TimerConfigs.user eq user.id }.first()
|
||||
}
|
||||
}
|
||||
|
||||
fun getConfig(user: User): TimerConfig? {
|
||||
return transaction {
|
||||
TimerConfig.find(TimerConfigs.user eq user.id).firstOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
fun saveOrUpdateConfig(user: User, timerConfig: TimerType) {
|
||||
return if (getConfig(user) == null) {
|
||||
saveConfig(user, timerConfig)
|
||||
} else {
|
||||
updateConfig(user, timerConfig)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user