From 48bf52a2691929efc40458b8a2b2b1294ce7df4b Mon Sep 17 00:00:00 2001 From: MARCROCK22 <57925328+MARCROCK22@users.noreply.github.com> Date: Sat, 25 May 2024 13:27:53 -0400 Subject: [PATCH] feat: collectors --- src/client/client.ts | 2 +- src/client/collectors.ts | 6 ++++-- src/events/handler.ts | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/client/client.ts b/src/client/client.ts index fa55451..0cb7ecd 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -170,6 +170,7 @@ export class Client extends BaseClient { //rest of the events default: { await this.cache.onPacket(packet); + await this.events?.execute(packet.t, packet, this as Client, shardId); switch (packet.t) { case 'INTERACTION_CREATE': await onInteractionCreate(this, packet.d, shardId); @@ -207,7 +208,6 @@ export class Client extends BaseClient { break; } } - await this.events?.execute(packet.t, packet, this as Client, shardId); break; } } diff --git a/src/client/collectors.ts b/src/client/collectors.ts index ba50291..fc6a730 100644 --- a/src/client/collectors.ts +++ b/src/client/collectors.ts @@ -12,7 +12,7 @@ type RunData = { timeout?: number; onStop?: (reason: string) => unknown; filter: (arg: Awaited>]>) => Awaitable; - run: (arg: Awaited>]>) => unknown; + run: (arg: Awaited>]>, stop: (reason?: string) => void) => unknown; }; idle?: NodeJS.Timeout; timeout?: NodeJS.Timeout; @@ -89,7 +89,9 @@ export class Collectors { for (const i of collectors) { if (await i.options.filter(data)) { i.idle?.refresh(); - await i.options.run(data); + await i.options.run(data, (reason = 'unknown') => { + return this.delete(i.options.event, i.nonce, reason); + }); break; } } diff --git a/src/events/handler.ts b/src/events/handler.ts index 4451ffe..c48fdd1 100644 --- a/src/events/handler.ts +++ b/src/events/handler.ts @@ -77,8 +77,8 @@ export class EventHandler extends BaseHandler { break; } - await this.collectors.run(args[0].t, args[0].d); await this.runEvent(args[0].t, args[1], args[0].d, args[2]); + await this.collectors.run(args[0].t, args[0].d); } async runEvent(name: GatewayEvents, client: Client | WorkerClient, packet: any, shardId: number) {