From 5d29e531e53f9e0efb8fa48dba248e22b1b0f841 Mon Sep 17 00:00:00 2001 From: neru Date: Sat, 10 Jan 2026 10:11:01 -0300 Subject: [PATCH] style: move event listeners to bottom --- src/bot.ts | 118 ++++++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index 5eab81f..51480fb 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -30,65 +30,6 @@ export class Bot { [K in keyof BotEventListeners]?: BotEventListener[]; } = {}; - /* - event methods - */ - public on( - event: K, - listener: BotEventListener - ): void { - if (!this.eventListeners[event]) { - this.eventListeners[event] = []; - } - (this.eventListeners[event] as BotEventListener[]).push(listener); - } - - public off( - event: K, - listener: BotEventListener - ): boolean { - const listeners = this.eventListeners[event]; - if (!listeners) return false; - - const index = (listeners as BotEventListener[]).indexOf(listener); - if (index > -1) { - (listeners as BotEventListener[]).splice(index, 1); - return true; - } - return false; - } - - public once( - event: K, - listener: BotEventListener - ): void { - const onceWrapper = ((...args: Parameters>) => { - this.off(event, onceWrapper as BotEventListener); - (listener as (...args: unknown[]) => void)(...args); - }) as BotEventListener; - - this.on(event, onceWrapper); - } - - private emit( - event: K, - ...args: Parameters> - ): void { - const listeners = this.eventListeners[event]; - if (listeners) { - for (const listener of listeners as BotEventListener[]) { - try { - (listener as (...args: unknown[]) => void)(...args); - } catch (error) { - this.log.error( - `Error in event listener for ${String(event)}:`, - error - ); - } - } - } - } - /* class methods */ @@ -196,6 +137,65 @@ export class Bot { this.emit('voiceStateUpdate', oldState, newState); } + /* + registerable event system + */ + public on( + event: K, + listener: BotEventListener + ): void { + if (!this.eventListeners[event]) { + this.eventListeners[event] = []; + } + (this.eventListeners[event] as BotEventListener[]).push(listener); + } + + public off( + event: K, + listener: BotEventListener + ): boolean { + const listeners = this.eventListeners[event]; + if (!listeners) return false; + + const index = (listeners as BotEventListener[]).indexOf(listener); + if (index > -1) { + (listeners as BotEventListener[]).splice(index, 1); + return true; + } + return false; + } + + public once( + event: K, + listener: BotEventListener + ): void { + const onceWrapper = ((...args: Parameters>) => { + this.off(event, onceWrapper as BotEventListener); + (listener as (...args: unknown[]) => void)(...args); + }) as BotEventListener; + + this.on(event, onceWrapper); + } + + private emit( + event: K, + ...args: Parameters> + ): void { + const listeners = this.eventListeners[event]; + if (listeners) { + for (const listener of listeners as BotEventListener[]) { + try { + (listener as (...args: unknown[]) => void)(...args); + } catch (error) { + this.log.error( + `Error in event listener for ${String(event)}:`, + error + ); + } + } + } + } + /* singleton logic */