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() {