apiDiscordRoutes fix. (9x)

- some logic changed.
This commit is contained in:
dalbodeule 2024-08-15 10:30:15 +09:00
parent f16e3658ea
commit 1ac716cc06
No known key found for this signature in database
GPG Key ID: EFA860D069C9FA65

View File

@ -77,56 +77,66 @@ object DiscordGuildCache {
if(DiscordRatelimits.isLimited()) { if(DiscordRatelimits.isLimited()) {
delay(DiscordRatelimits.getRateReset()) delay(DiscordRatelimits.getRateReset())
} }
val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/roles") { try {
headers { val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/roles") {
append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") headers {
append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}")
}
} }
}
val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull()
val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull()
val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) 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) { if (result.status != HttpStatusCode.OK) {
logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}")
return emptyList()
}
val parsed = result.body<List<GuildRole>>()
parsed.forEach { println("${it.name} - ${it.id}") }
return parsed
} catch(e: Exception) {
logger.info("fetchGuildRoles error: ${e.stackTraceToString()}")
return emptyList() return emptyList()
} }
val parsed = result.body<List<GuildRole>>()
parsed.forEach { println("${it.name} - ${it.id}") }
return parsed
} }
private suspend fun fetchGuildChannels(guildId: String): List<GuildChannel> { private suspend fun fetchGuildChannels(guildId: String): List<GuildChannel> {
if(DiscordRatelimits.isLimited()) { if(DiscordRatelimits.isLimited()) {
delay(DiscordRatelimits.getRateReset()) delay(DiscordRatelimits.getRateReset())
} }
val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/channels") { try {
headers { val result = applicationHttpClient.get("https://discord.com/api/guilds/${guildId}/channels") {
append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") headers {
append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}")
}
} }
}
val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull() val rateLimit = result.headers["X-RateLimit-Limit"]?.toIntOrNull()
val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull() val remaining = result.headers["X-RateLimit-Remaining"]?.toIntOrNull()
val resetAfter = result.headers["X-RateLimit-Reset-After"]?.toDoubleOrNull()?.toLong()?.plus(1L) 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) { if (result.status != HttpStatusCode.OK) {
logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}") logger.error("Failed to fetch data from Discord API. Status: ${result.status} ${result.bodyAsText()}")
return emptyList()
}
val parsed = result.body<List<GuildChannel>>().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() return emptyList()
} }
val parsed = result.body<List<GuildChannel>>().filter { it.type == ChannelType.GUILD_TEXT }
parsed.forEach { println("${it.name} - ${it.id}") }
return parsed
} }
private suspend fun fetchAllGuilds() { private suspend fun fetchAllGuilds() {