summary refs log tree commit diff
path: root/src/listener
diff options
context:
space:
mode:
Diffstat (limited to 'src/listener')
-rw-r--r--src/listener/listener.ts18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/listener/listener.ts b/src/listener/listener.ts

index 282ebfd5..8183f70c 100644 --- a/src/listener/listener.ts +++ b/src/listener/listener.ts
@@ -17,7 +17,7 @@ export interface DispatchOpts { guilds: Array<string>; } -function getPipeline(this: WebSocket, guilds: string[], channels: string[]) { +function getPipeline(this: WebSocket, guilds: string[], channels: string[] = []) { if (this.shard_count) { guilds = guilds.filter((x) => (BigInt(x) >> 22n) % this.shard_count === this.shard_id); } @@ -54,12 +54,7 @@ export async function setupListener(this: WebSocket) { export async function dispatch(this: WebSocket, document: Event, { eventStream, guilds }: DispatchOpts) { var permission = new Permissions("ADMINISTRATOR"); // default permission for dms console.log("event", document); - - if (document.guild_id) { - if (!this.intents.has("GUILDS")) return; - const channel_id = document.channel_id || document.data?.channel_id; - permission = await getPermission(this.user_id, document.guild_id, channel_id); - } + var channel_id = document.channel_id || document.data?.channel_id; if (document.event === "GUILD_CREATE") { guilds.push(document.data.id); @@ -67,12 +62,19 @@ export async function dispatch(this: WebSocket, document: Event, { eventStream, } else if (document.event === "GUILD_DELETE") { guilds.remove(document.guild_id); eventStream.changeStream(getPipeline.call(this, guilds)); + } else if (document.event === "CHANNEL_DELETE") channel_id = null; + if (document.guild_id && !this.intents.has("GUILDS")) return; + + try { + permission = await getPermission(this.user_id, document.guild_id, channel_id); + } catch (e) { + permission = new Permissions(); } // check intents: https://discord.com/developers/docs/topics/gateway#gateway-intents switch (document.event) { - case "GUILD_CREATE": case "GUILD_DELETE": + case "GUILD_CREATE": case "GUILD_UPDATE": case "GUILD_ROLE_CREATE": case "GUILD_ROLE_UPDATE":