From 1ac716cc06a406fceb568daa57964beb93134d7e Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:30:15 +0900 Subject: [PATCH] apiDiscordRoutes fix. (9x) - some logic changed. --- .../webserver/utils/DiscordGuildCache.kt | 74 +++++++++++-------- 1 file changed, 42 insertions(+), 32 deletions(-) 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 0e0a25c..694496c 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 @@ -77,56 +77,66 @@ object DiscordGuildCache { if(DiscordRatelimits.isLimited()) { delay(DiscordRatelimits.getRateReset()) } - val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/roles") { - headers { - append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") + try { + val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/roles") { + headers { + append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") + } } - } - val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() - val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() - val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) + val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() + val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() + val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) - DiscordRatelimits.setRateLimit(rateLimit, remaining, resetAfter) + DiscordRatelimits.setRateLimit(rateLimit, remaining, resetAfter) - if (result.status != HttpStatusCode.OK) { - logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") + if (result.status != HttpStatusCode.OK) { + logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") + return emptyList() + } + + val parsed = result.body>() + + parsed.forEach { println("${it.name} - ${it.id}") } + + return parsed + } catch(e: Exception) { + logger.info("fetchGuildRoles error: ${e.stackTraceToString()}") return emptyList() } - - val parsed = result.body>() - - parsed.forEach { println("${it.name} - ${it.id}") } - - return parsed } private suspend fun fetchGuildChannels(guildId: String): List { if(DiscordRatelimits.isLimited()) { delay(DiscordRatelimits.getRateReset()) } - val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/channels") { - headers { - append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") + try { + val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/channels") { + headers { + append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") + } } - } - val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() - val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() - val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) + val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() + val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() + val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) - DiscordRatelimits.setRateLimit(rateLimit, remaining, resetAfter) + DiscordRatelimits.setRateLimit(rateLimit, remaining, resetAfter) - if (result.status != HttpStatusCode.OK) { - logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") + if (result.status != HttpStatusCode.OK) { + logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") + return emptyList() + } + + val parsed = result.body>().filter { it.type == ChannelType.GUILD_TEXT } + + parsed.forEach { println("${it.name} - ${it.id}") } + + return parsed + } catch(e: Exception) { + logger.info("fetchGuildRoles error: ${e.stackTraceToString()}") return emptyList() } - - val parsed = result.body>().filter { it.type == ChannelType.GUILD_TEXT } - - parsed.forEach { println("${it.name} - ${it.id}") } - - return parsed } private suspend fun fetchAllGuilds() {