7 Commits
0.1.7 ... 0.3.3

Author SHA1 Message Date
dalbodeule
779604d21e update README.md 2024-07-18 23:00:36 +09:00
dalbodeule
83791fe59b remove useless prints. 2024-07-15 10:16:12 +09:00
dalbodeule
fe63a4af15 chzzk followdate fix 2024-07-14 19:47:12 +09:00
dalbodeule
7522ec6f9e chzzk followdate error handler add 2024-07-14 18:37:52 +09:00
dalbodeule
c35b3082cc log debug to info. level changed 2024-07-05 14:06:31 +09:00
dalbodeule
19d3f23cd7 chzzk livestream status handler fix 2024-07-03 22:33:25 +09:00
dalbodeule
80d777dad5 chzzkChat only connected on live 2024-07-02 10:04:23 +09:00
7 changed files with 49 additions and 28 deletions

14
.idea/dataSources.xml generated
View File

@@ -9,6 +9,20 @@
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="@prod" uuid="ea495604-156c-4d96-9100-9074495ce007">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/chzzk</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>

View File

@@ -1,3 +1,3 @@
# maybe_chzzk_bot_kotlin
[discord](https://discord.gg/up8ANZegmy)
[![Discord](https://img.shields.io/discord/1250093195870867577)](https://discord.gg/up8ANZegmy) [![Build Status](https://teamcity.mori.space/app/rest/builds/buildType:NabotChzzkBot_Build/statusIcon)](https://teamcity.mori.space/project/NabotChzzkBot)

View File

@@ -21,12 +21,17 @@ data class IFollowContent(
val badge: Badge? = null,
val title: Title? = null,
val verifiedMark: Boolean = false,
val activityBadges: List<String> = emptyList(),
val activityBadges: List<Badge> = emptyList(),
val streamingProperty: StreamingProperty = StreamingProperty()
)
data class Badge(
val imageUrl: String = ""
val badgeNo: Int?,
val badgeId: String?,
val imageUrl: String?,
val title: String?,
val description: String?,
val activated: Boolean?
)
data class Title(
@@ -117,6 +122,7 @@ fun getFollowDate(chatID: String, userId: String) : IData<IFollowContent> {
return follow
} catch(e: Exception) {
println(e.stackTrace)
throw e
}
}

View File

@@ -62,7 +62,7 @@ object ChzzkHandler {
try {
val streamInfo = getStreamInfo(it.channel.channelId)
if (streamInfo.content.status == "OPEN" && !it.isActive) it.isActive(true, streamInfo)
if (streamInfo.content.status == "CLOSED" && it.isActive) it.isActive(false, streamInfo)
if (streamInfo.content.status == "CLOSE" && it.isActive) it.isActive(false, streamInfo)
} catch(e: SocketTimeoutException) {
logger.info("Timeout: ${it.channel.channelName} / ${e.stackTraceToString()}")
} catch (e: Exception) {
@@ -116,11 +116,6 @@ class UserHandler(
})
.build()
init {
logger.info("ChzzkChat connecting... ${channel.channelName} - ${channel.channelId}")
listener.connectAsync()
}
internal fun disable() {
listener.closeAsync()
}
@@ -140,6 +135,10 @@ class UserHandler(
_isActive = value
if(value) {
logger.info("${user.username} is live.")
logger.info("ChzzkChat connecting... ${channel.channelName} - ${channel.channelId}")
listener.connectAsync()
if(user.liveAlertMessage != "" && user.liveAlertGuild != null && user.liveAlertChannel != null) {
val channel = discord.getChannel(user.liveAlertGuild!!, user.liveAlertChannel!!) ?: throw RuntimeException("${user.liveAlertChannel} is not valid.")
@@ -164,8 +163,7 @@ class UserHandler(
}
} else {
logger.info("${user.username} is offline.")
listener.sendChat("${user.username} 님! 방송 수고하셨습니다.")
listener.closeAsync()
}
}
}

View File

@@ -8,11 +8,9 @@ import space.mori.chzzk_bot.services.UserService
import xyz.r2turntrue.chzzk4j.chat.ChatMessage
import xyz.r2turntrue.chzzk4j.chat.ChzzkChat
import xyz.r2turntrue.chzzk4j.types.channel.ChzzkChannel
import java.text.SimpleDateFormat
import java.time.LocalDate
import java.time.Period
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*
import java.time.temporal.ChronoUnit
class MessageHandler(
@@ -143,18 +141,25 @@ class MessageHandler(
}
result = followPattern.replace(result) {
val following = getFollowDate(listener.chatId, msg.userId)
val dateString: String = following.content.streamingProperty.following?.followDate ?: SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(
Date()
)
val today = LocalDate.now()
try {
val followingDate = getFollowDate(listener.chatId, msg.userId)
.content.streamingProperty.following?.followDate
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
// 문자열을 LocalDate 객체로 변환
val pastDate = LocalDate.parse(dateString, formatter)
return@replace when (followingDate) {
null -> "0"
else -> {
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
val pastDate = LocalDateTime.parse(followingDate, formatter)
val today = LocalDateTime.now()
val period = ChronoUnit.DAYS.between(pastDate, today)
val period = Period.between(pastDate, today)
period.days.toString()
"$period"
}
}
} catch (e: Exception) {
logger.error(e.message)
"0"
}
}
result = counterPattern.replace(result) {

View File

@@ -81,8 +81,6 @@ object CounterService {
(DailyCounters.name eq name) and (DailyCounters.userId eq userId) and (DailyCounters.user eq user.id)
}.singleOrNull()
println("$counter")
if(counter == null) {
val newCounter = DailyCounter.new {
this.name = name

View File

@@ -3,7 +3,7 @@
<!-- 콘솔에 출력하는 기본 로그 설정 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
<level>INFO</level>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>