mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 11:28:15 +00:00
fix(handleres/guilds): unavailable guilds & guildDelete emit delay (#674)
Co-authored-by: ayntee <ayyantee@gmail.com>
This commit is contained in:
@@ -1,13 +1,28 @@
|
|||||||
import { eventHandlers } from "../../bot.ts";
|
import { eventHandlers } from "../../bot.ts";
|
||||||
|
import { cacheHandlers } from "../../cache.ts";
|
||||||
import { DiscordPayload, GuildDeletePayload } from "../../types/mod.ts";
|
import { DiscordPayload, GuildDeletePayload } from "../../types/mod.ts";
|
||||||
import { basicShards } from "../../ws/shard.ts";
|
import { basicShards } from "../../ws/shard.ts";
|
||||||
import { cacheHandlers } from "../../cache.ts";
|
|
||||||
|
|
||||||
export async function handleGuildDelete(
|
export async function handleGuildDelete(
|
||||||
data: DiscordPayload,
|
data: DiscordPayload,
|
||||||
shardID: number,
|
shardID: number,
|
||||||
) {
|
) {
|
||||||
const payload = data.d as GuildDeletePayload;
|
const payload = data.d as GuildDeletePayload;
|
||||||
|
|
||||||
|
const guild = await cacheHandlers.get("guilds", payload.id);
|
||||||
|
if (!guild) return;
|
||||||
|
|
||||||
|
await cacheHandlers.delete("guilds", payload.id);
|
||||||
|
|
||||||
|
if (payload.unavailable) {
|
||||||
|
const shard = basicShards.get(shardID);
|
||||||
|
if (shard) shard.unavailableGuildIDs.add(payload.id);
|
||||||
|
|
||||||
|
await cacheHandlers.set("unavailableGuilds", payload.id, Date.now());
|
||||||
|
}
|
||||||
|
|
||||||
|
eventHandlers.guildDelete?.(guild);
|
||||||
|
|
||||||
cacheHandlers.forEach("messages", (message) => {
|
cacheHandlers.forEach("messages", (message) => {
|
||||||
if (message.guildID === payload.id) {
|
if (message.guildID === payload.id) {
|
||||||
cacheHandlers.delete("messages", message.id);
|
cacheHandlers.delete("messages", message.id);
|
||||||
@@ -20,30 +35,15 @@ export async function handleGuildDelete(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cacheHandlers.forEach("members", async (member) => {
|
cacheHandlers.forEach("members", (member) => {
|
||||||
if (!member.guilds.has(payload.id)) return;
|
if (!member.guilds.has(payload.id)) return;
|
||||||
|
|
||||||
member.guilds.delete(payload.id);
|
member.guilds.delete(payload.id);
|
||||||
|
|
||||||
if (!member.guilds.size) {
|
if (!member.guilds.size) {
|
||||||
await cacheHandlers.delete("members", member.id);
|
return cacheHandlers.delete("members", member.id);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await cacheHandlers.set("members", member.id, member);
|
cacheHandlers.set("members", member.id, member);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (payload.unavailable) {
|
|
||||||
const shard = basicShards.get(shardID);
|
|
||||||
if (shard) shard.unavailableGuildIDs.add(payload.id);
|
|
||||||
|
|
||||||
return cacheHandlers.set("unavailableGuilds", payload.id, Date.now());
|
|
||||||
}
|
|
||||||
|
|
||||||
const guild = await cacheHandlers.get("guilds", payload.id);
|
|
||||||
if (!guild) return;
|
|
||||||
|
|
||||||
await cacheHandlers.delete("guilds", payload.id);
|
|
||||||
|
|
||||||
eventHandlers.guildDelete?.(guild);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user