mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-16 03:18:17 +00:00
lop
This commit is contained in:
@@ -32,6 +32,10 @@ export async function handleChannelDelete(data: DiscordGatewayPayload) {
|
||||
|
||||
await cacheHandlers.delete("channels", payload.id);
|
||||
cacheHandlers.forEach("messages", (message) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`Running forEach messages loop in CHANNEL_DELTE file.`,
|
||||
);
|
||||
if (message.channelId === payload.id) {
|
||||
cacheHandlers.delete("messages", message.id);
|
||||
}
|
||||
|
||||
@@ -27,18 +27,30 @@ export async function handleGuildDelete(
|
||||
}
|
||||
|
||||
cacheHandlers.forEach("messages", (message) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`1. Running forEach messages loop in CHANNEL_DELTE file.`,
|
||||
);
|
||||
if (message.guildId === payload.id) {
|
||||
cacheHandlers.delete("messages", message.id);
|
||||
}
|
||||
});
|
||||
|
||||
cacheHandlers.forEach("channels", (channel) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`2. Running forEach channels loop in CHANNEL_DELTE file.`,
|
||||
);
|
||||
if (channel.guildId === payload.id) {
|
||||
cacheHandlers.delete("channels", channel.id);
|
||||
}
|
||||
});
|
||||
|
||||
cacheHandlers.forEach("members", (member) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`3. Running forEach members loop in CHANNEL_DELTE file.`,
|
||||
);
|
||||
if (!member.guilds.has(payload.id)) return;
|
||||
|
||||
member.guilds.delete(payload.id);
|
||||
|
||||
@@ -46,12 +46,20 @@ export async function handleGuildMemberUpdate(data: DiscordGatewayPayload) {
|
||||
const roleIds = guildMember.roles || [];
|
||||
|
||||
roleIds.forEach((id) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`1. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
||||
);
|
||||
if (!payload.roles.includes(id)) {
|
||||
eventHandlers.roleLost?.(guild, memberStruct, id);
|
||||
}
|
||||
});
|
||||
|
||||
payload.roles.forEach((id) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`2. Running forEach loop in GUILD_MEMBER_UPDATE file.`,
|
||||
);
|
||||
if (!roleIds.includes(id)) {
|
||||
eventHandlers.roleGained?.(guild, memberStruct, id);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,13 @@ export async function handleReady(
|
||||
shard.unavailableGuildIds = new Set(payload.guilds.map((g) => g.id));
|
||||
|
||||
// Start ready check in 2 seconds
|
||||
setTimeout(async () => await checkReady(payload, shardId, now), 2000);
|
||||
setTimeout(async () => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`1. Running setTimeout in READY file.`,
|
||||
);
|
||||
await checkReady(payload, shardId, now);
|
||||
}, 2000);
|
||||
|
||||
// Wait 5 seconds to spawn next shard
|
||||
await delay(5000);
|
||||
@@ -53,7 +59,13 @@ async function checkReady(payload: DiscordReady, shardId: number, now: number) {
|
||||
await loaded(shardId);
|
||||
} else {
|
||||
// Not all guilds were loaded but 10 seconds haven't passed so check again
|
||||
setTimeout(async () => await checkReady(payload, shardId, now), 2000);
|
||||
setTimeout(async () => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`2. Running setTimeout in READY file.`,
|
||||
);
|
||||
await checkReady(payload, shardId, now);
|
||||
}, 2000);
|
||||
}
|
||||
} else {
|
||||
// All guilds were loaded
|
||||
@@ -71,13 +83,23 @@ async function loaded(shardId: number) {
|
||||
if (shardId === ws.lastShardId - 1) {
|
||||
// Still some shards are loading so wait another 2 seconds for them
|
||||
if (ws.shards.some((shard) => !shard.ready)) {
|
||||
setTimeout(async () => await loaded(shardId), 2000);
|
||||
setTimeout(async () => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`3. Running setTimeout in CHANNEL_DELTE file.`,
|
||||
);
|
||||
await loaded(shardId);
|
||||
}, 2000);
|
||||
} else {
|
||||
cache.isReady = true;
|
||||
eventHandlers.ready?.();
|
||||
|
||||
// All the members that came in on guild creates should now be processed 1 by 1
|
||||
for (const [guildId, members] of initialMemberLoadQueue.entries()) {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
"Running for of loop in READY file for loading members.",
|
||||
);
|
||||
await Promise.allSettled(
|
||||
members.map(async (member) => {
|
||||
const memberStruct = await structures.createMemberStruct(
|
||||
|
||||
@@ -10,6 +10,10 @@ export async function handleUserUpdate(data: DiscordGatewayPayload) {
|
||||
if (!member) return;
|
||||
|
||||
Object.entries(userData).forEach(([key, value]) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`Running forEach loop in USER_UPDATE file.`,
|
||||
);
|
||||
// @ts-ignore index signatures
|
||||
if (member[key] !== value) return member[key] = value;
|
||||
});
|
||||
|
||||
@@ -15,10 +15,18 @@ export async function handleGuildRoleDelete(data: DiscordGatewayPayload) {
|
||||
|
||||
// For bots without GUILD_MEMBERS member.roles is never updated breaking permissions checking.
|
||||
cacheHandlers.forEach("members", (member) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`1. Running forEach members loop in GUILD_ROLE_DELETE file.`,
|
||||
);
|
||||
// Not in the relevant guild so just skip.
|
||||
if (!member.guilds.has(guild.id)) return;
|
||||
|
||||
member.guilds.forEach((g) => {
|
||||
eventHandlers.debug(
|
||||
"loop",
|
||||
`2. Running forEach loop in CHANNEL_DELTE file.`,
|
||||
);
|
||||
// Member does not have this role
|
||||
if (!g.roles.includes(payload.role_id)) return;
|
||||
// Remove this role from the members cache
|
||||
|
||||
Reference in New Issue
Block a user