From 0e5b99bfb913ab62df59ea9e0d48ade7ae1de0a0 Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:35:54 +0900 Subject: [PATCH] debug DiscordGuildCache (x2) - avoid ratelimit. - cache logic fix - on login, add Cache --- .../main/kotlin/space/mori/chzzk_bot/webserver/Main.kt | 8 ++++++++ .../mori/chzzk_bot/webserver/utils/DiscordGuildCache.kt | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/Main.kt b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/Main.kt index 60469c2..92877ca 100644 --- a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/Main.kt +++ b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/Main.kt @@ -23,6 +23,9 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import space.mori.chzzk_bot.common.services.UserService import space.mori.chzzk_bot.webserver.routes.* +import space.mori.chzzk_bot.webserver.utils.CachedGuilds +import space.mori.chzzk_bot.webserver.utils.DiscordGuildCache +import space.mori.chzzk_bot.webserver.utils.Guild import java.time.Duration val dotenv = dotenv { @@ -125,6 +128,11 @@ val server = embeddedServer(Netty, port = 8080, ) { it.owner }.map { it.id } )) + DiscordGuildCache.addGuild(guilds.associate { + it.id to CachedGuilds( + Guild(it.id, it.name, it.icon, it.banner) + ) + }) redirects[principal.state]?.let { redirect -> call.respondRedirect(redirect) diff --git a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/utils/DiscordGuildCache.kt b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/utils/DiscordGuildCache.kt index d2128ce..f89b9d8 100644 --- a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/utils/DiscordGuildCache.kt +++ b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/utils/DiscordGuildCache.kt @@ -18,7 +18,7 @@ object DiscordGuildCache { suspend fun getCachedGuilds(guildId: String): Guild? { val now = Instant.now() - return if(cache.isNotEmpty() && cache[guildId]?.timestamp?.plusSeconds(EXP_SECONDS)?.isAfter(now) == true) { + return if(cache.isNotEmpty() && cache[guildId]?.timestamp?.plusSeconds(EXP_SECONDS)?.isAfter(now) == false) { cache[guildId]?.guild } else { fetchAllGuilds() @@ -61,6 +61,10 @@ object DiscordGuildCache { delay(1000) } } + + fun addGuild(guilds: Map) { + cache.putAll(guilds) + } } data class CachedGuilds(