diff --git a/src/api/controllers/guilds.ts b/src/api/controllers/guilds.ts index 8be9f8df7..478dfb636 100644 --- a/src/api/controllers/guilds.ts +++ b/src/api/controllers/guilds.ts @@ -9,7 +9,7 @@ import { } from "../../types/mod.ts"; import { cache } from "../../util/cache.ts"; import { Collection } from "../../util/collection.ts"; -import { structures } from "../structures/mod.ts"; +import { Member, structures } from "../structures/mod.ts"; import { cacheHandlers } from "./cache.ts"; export async function handleInternalGuildCreate( @@ -48,6 +48,19 @@ export async function handleInternalGuildDelete(data: DiscordPayload) { } }); + cacheHandlers.forEach("members", async (member) => { + if (!member.guilds.has(payload.id)) return; + + member.guilds.delete(payload.id); + + if (!member.guilds.size) { + await cacheHandlers.delete("members", member.id); + return; + } + + await cacheHandlers.set("members", member.id, member); + }); + if (payload.unavailable) { return cacheHandlers.set("unavailableGuilds", payload.id, Date.now()); }