This commit is contained in:
dalbodeule 2024-08-14 20:28:17 +09:00
parent cb5bbf73c3
commit 0e3264a9f3
No known key found for this signature in database
GPG Key ID: EFA860D069C9FA65

View File

@ -30,6 +30,9 @@ object DiscordGuildCache {
} }
private suspend fun fetchGuilds(beforeGuildId: String? = null, limit: Int = 100): List<DiscordGuildListAPI> { private suspend fun fetchGuilds(beforeGuildId: String? = null, limit: Int = 100): List<DiscordGuildListAPI> {
if(DiscordRatelimits.isLimited()) {
delay(DiscordRatelimits.getRateReset().takeIf { it > 1000L } ?: 3000L)
}
val result = applicationHttpClient.get("https://discord.com/api/users/@me/guilds") { val result = applicationHttpClient.get("https://discord.com/api/users/@me/guilds") {
headers { headers {
append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}") append(HttpHeaders.Authorization, "Bot ${dotenv["DISCORD_TOKEN"]}")
@ -52,9 +55,6 @@ object DiscordGuildCache {
private suspend fun fetchAllGuilds() { private suspend fun fetchAllGuilds() {
var lastGuildId: String? = null var lastGuildId: String? = null
while (true) { while (true) {
if(DiscordRatelimits.isLimited()) {
delay(DiscordRatelimits.getRateReset().takeIf { it > 1000L } ?: 3000L)
}
try { try {
val guilds = fetchGuilds(lastGuildId) val guilds = fetchGuilds(lastGuildId)
if (guilds.isEmpty()) { if (guilds.isEmpty()) {
@ -63,7 +63,8 @@ object DiscordGuildCache {
guilds.forEach { guilds.forEach {
cache[it.id] = CachedGuilds( cache[it.id] = CachedGuilds(
Guild(it.id, it.name, it.icon, it.banner) Guild(it.id, it.name, it.icon, it.banner),
Instant.now().plusSeconds(EXP_SECONDS),
) )
} }
lastGuildId = guilds.last().id lastGuildId = guilds.last().id
@ -76,7 +77,7 @@ object DiscordGuildCache {
fun addGuild(guilds: Map<String, Guild>) { fun addGuild(guilds: Map<String, Guild>) {
cache.putAll(guilds.map { cache.putAll(guilds.map {
it.key to CachedGuilds(it.value, Instant.now()) it.key to CachedGuilds(it.value, Instant.now().plusSeconds(EXP_SECONDS))
}) })
} }
} }