Merge pull request #85 from dalbodeule/develop

apiDiscordRoutes fix. (4x)
This commit is contained in:
JinU Choi 2024-08-15 07:39:17 +09:00 committed by GitHub
commit 54905803bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,7 +8,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import space.mori.chzzk_bot.common.utils.logger import org.slf4j.LoggerFactory
import space.mori.chzzk_bot.webserver.* import space.mori.chzzk_bot.webserver.*
import java.time.Instant import java.time.Instant
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
@ -17,6 +17,7 @@ object DiscordGuildCache {
private val cache = ConcurrentHashMap<String, CachedGuilds>() private val cache = ConcurrentHashMap<String, CachedGuilds>()
private const val EXP_SECONDS = 600L private const val EXP_SECONDS = 600L
private val mutex = Mutex() private val mutex = Mutex()
private val logger = LoggerFactory.getLogger(this::class.java)
suspend fun getCachedGuilds(guildId: String): Guild? { suspend fun getCachedGuilds(guildId: String): Guild? {
val now = Instant.now() val now = Instant.now()
@ -27,12 +28,17 @@ object DiscordGuildCache {
if(guild == null || guild.timestamp.plusSeconds(EXP_SECONDS).isBefore(now) || !guild.isBotAvailable) { if(guild == null || guild.timestamp.plusSeconds(EXP_SECONDS).isBefore(now) || !guild.isBotAvailable) {
fetchAllGuilds() fetchAllGuilds()
} }
if(guild?.guild?.roles?.isEmpty() == true) { try {
if (guild?.guild?.roles?.isEmpty() == true) {
guild.guild.roles = fetchGuildRoles(guildId) guild.guild.roles = fetchGuildRoles(guildId)
} }
if(guild?.guild?.channel?.isEmpty() == true) { if (guild?.guild?.channel?.isEmpty() == true) {
guild.guild.channel = fetchGuildChannels(guildId) guild.guild.channel = fetchGuildChannels(guildId)
} }
} catch(e: Exception) {
logger.info("guild fetch is failed.")
return null
}
} }
} }
return cache[guildId]?.guild return cache[guildId]?.guild