diff --git a/src/listener/listener.ts b/src/listener/listener.ts index 85dd33fc..50ca8e65 100644 --- a/src/listener/listener.ts +++ b/src/listener/listener.ts @@ -36,18 +36,7 @@ export async function setupListener(this: WebSocket) { ); await eventStream.init(); - eventStream.on("insert", async (document) => { - dispatch.call(this, document); - - const newUser = await UserModel.findOne({ id: user.id }).lean().exec(); - var newGuilds = user.guilds; - - if (shard_count) { - newGuilds = user.guilds.filter((x) => (BigInt(x) >> 22n) % shard_count === shard_id); - } - - eventStream.changeStream([{ $match: { $or: [{ "fullDocument.guild_id": { $in: newGuilds } }, { "fullDocument.user_id": newUser.id }] } }]); - }); + eventStream.on("insert", dispatch.bind(this)); this.once("close", () => eventStream.destroy()); } @@ -62,6 +51,17 @@ export async function dispatch(this: WebSocket, document: Event) { permission = await getPermission(this.user_id, document.guild_id, channel_id); } + if(document.event === "GUILD_CREATE") { + const newUser = await UserModel.findOne({ id: this.user_id }).lean().exec(); + var newGuilds = newUser.guilds; + + if (shard_count) { + newGuilds = newUser.guilds.filter((x) => (BigInt(x) >> 22n) % shard_count === shard_id); + } + + eventStream.changeStream([{ $match: { $or: [{ "fullDocument.guild_id": { $in: newGuilds } }, { "fullDocument.user_id": newUser.id }] } }]); + } + // check intents: https://discord.com/developers/docs/topics/gateway#gateway-intents switch (document.event) { case "GUILD_CREATE":