mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-06-09 07:18:22 +00:00
Merge pull request #25 from dalbodeule/develop
some change on LiveStatus logics
This commit is contained in:
commit
60319bc6fa
@ -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.TimerEvent
|
||||||
import space.mori.chzzk_bot.common.events.TimerType
|
import space.mori.chzzk_bot.common.events.TimerType
|
||||||
import space.mori.chzzk_bot.common.models.User
|
import space.mori.chzzk_bot.common.models.User
|
||||||
|
import space.mori.chzzk_bot.common.services.LiveStatusService
|
||||||
import space.mori.chzzk_bot.common.services.TimerConfigService
|
import space.mori.chzzk_bot.common.services.TimerConfigService
|
||||||
import space.mori.chzzk_bot.common.services.UserService
|
import space.mori.chzzk_bot.common.services.UserService
|
||||||
import space.mori.chzzk_bot.common.utils.convertChzzkDateToLocalDateTime
|
import space.mori.chzzk_bot.common.utils.convertChzzkDateToLocalDateTime
|
||||||
@ -96,11 +97,15 @@ class UserHandler(
|
|||||||
val channel: ChzzkChannel,
|
val channel: ChzzkChannel,
|
||||||
val logger: Logger,
|
val logger: Logger,
|
||||||
private var user: User,
|
private var user: User,
|
||||||
private var _isActive: Boolean = false,
|
|
||||||
var streamStartTime: LocalDateTime?,
|
var streamStartTime: LocalDateTime?,
|
||||||
) {
|
) {
|
||||||
private lateinit var messageHandler: MessageHandler
|
private lateinit var messageHandler: MessageHandler
|
||||||
private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java)
|
private val dispatcher: CoroutinesEventBus by inject(CoroutinesEventBus::class.java)
|
||||||
|
private var _isActive: Boolean
|
||||||
|
get() = LiveStatusService.getLiveStatus(user)?.status ?: false
|
||||||
|
set(value) {
|
||||||
|
LiveStatusService.updateOrCreate(user, value)
|
||||||
|
}
|
||||||
|
|
||||||
var listener: ChzzkChat = chzzk.chat(channel.channelId)
|
var listener: ChzzkChat = chzzk.chat(channel.channelId)
|
||||||
.withAutoReconnect(true)
|
.withAutoReconnect(true)
|
||||||
|
@ -40,7 +40,6 @@ class Discord: ListenerAdapter() {
|
|||||||
val embed = EmbedBuilder()
|
val embed = EmbedBuilder()
|
||||||
embed.setTitle(status.content.liveTitle, "https://chzzk.naver.com/live/${user.token}")
|
embed.setTitle(status.content.liveTitle, "https://chzzk.naver.com/live/${user.token}")
|
||||||
embed.setDescription("${user.username} 님이 방송을 시작했습니다.")
|
embed.setDescription("${user.username} 님이 방송을 시작했습니다.")
|
||||||
embed.setUrl(status.content.channel.channelImageUrl)
|
|
||||||
embed.setTimestamp(Instant.now())
|
embed.setTimestamp(Instant.now())
|
||||||
embed.setAuthor(user.username, "https://chzzk.naver.com/live/${user.token}", status.content.channel.channelImageUrl)
|
embed.setAuthor(user.username, "https://chzzk.naver.com/live/${user.token}", status.content.channel.channelImageUrl)
|
||||||
embed.addField("카테고리", status.content.liveCategoryValue, true)
|
embed.addField("카테고리", status.content.liveCategoryValue, true)
|
||||||
|
@ -31,7 +31,8 @@ object Connector {
|
|||||||
DailyCounters,
|
DailyCounters,
|
||||||
PersonalCounters,
|
PersonalCounters,
|
||||||
Managers,
|
Managers,
|
||||||
TimerConfigs
|
TimerConfigs,
|
||||||
|
LiveStatuses
|
||||||
)
|
)
|
||||||
|
|
||||||
transaction {
|
transaction {
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
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 LiveStatuses: IntIdTable("live_statuses") {
|
||||||
|
val user = reference("user", Users, onDelete = ReferenceOption.CASCADE)
|
||||||
|
val status = bool("status")
|
||||||
|
}
|
||||||
|
|
||||||
|
class LiveStatus(id: EntityID<Int>) : IntEntity(id) {
|
||||||
|
companion object : IntEntityClass<LiveStatus>(LiveStatuses)
|
||||||
|
|
||||||
|
var user by User referencedOn LiveStatuses.user
|
||||||
|
var status by LiveStatuses.status
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package space.mori.chzzk_bot.common.services
|
||||||
|
|
||||||
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
import space.mori.chzzk_bot.common.models.LiveStatus
|
||||||
|
import space.mori.chzzk_bot.common.models.LiveStatuses
|
||||||
|
import space.mori.chzzk_bot.common.models.User
|
||||||
|
|
||||||
|
object LiveStatusService {
|
||||||
|
fun updateOrCreate(user: User, status: Boolean): LiveStatus {
|
||||||
|
return transaction {
|
||||||
|
return@transaction when(val liveStatus = LiveStatus.find(LiveStatuses.user eq user.id).firstOrNull()) {
|
||||||
|
null -> LiveStatus.new {
|
||||||
|
this.user = user
|
||||||
|
this.status = status
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
liveStatus.status = status
|
||||||
|
liveStatus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getLiveStatus(user: User): LiveStatus? {
|
||||||
|
return transaction {
|
||||||
|
LiveStatus.find(LiveStatuses.user eq user.id).firstOrNull()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user