diff options
-rw-r--r-- | src/gateway/opcodes/Identify.ts | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/gateway/opcodes/Identify.ts b/src/gateway/opcodes/Identify.ts index 1c3cab28..b508cbf6 100644 --- a/src/gateway/opcodes/Identify.ts +++ b/src/gateway/opcodes/Identify.ts @@ -141,18 +141,11 @@ export async function onIdentify(this: WebSocket, data: Payload) { }) as PublicMember[][]; let guilds = members.map((x) => ({ ...x.guild, joined_at: x.joined_at })); + const pending_guilds: typeof guilds = []; // @ts-ignore guilds = guilds.map((guild) => { if (user.bot) { - setTimeout(() => { - var promise = Send(this, { - op: OPCODES.Dispatch, - t: EVENTEnum.GuildCreate, - s: this.sequence++, - d: guild, - }); - if (promise) promise.catch(console.error); - }, 500); + pending_guilds.push(guild); return { id: guild.id, unavailable: true }; } @@ -314,6 +307,17 @@ export async function onIdentify(this: WebSocket, data: Payload) { d, }); + await Promise.all( + pending_guilds.map((guild) => + Send(this, { + op: OPCODES.Dispatch, + t: EVENTEnum.GuildCreate, + s: this.sequence++, + d: guild, + })?.catch(console.error), + ), + ); + //TODO send READY_SUPPLEMENTAL //TODO send GUILD_MEMBER_LIST_UPDATE //TODO send SESSIONS_REPLACE |