style: move event listeners to bottom
This commit is contained in:
+59
-59
@@ -30,65 +30,6 @@ export class Bot {
|
|||||||
[K in keyof BotEventListeners]?: BotEventListener<K>[];
|
[K in keyof BotEventListeners]?: BotEventListener<K>[];
|
||||||
} = {};
|
} = {};
|
||||||
|
|
||||||
/*
|
|
||||||
event methods
|
|
||||||
*/
|
|
||||||
public on<K extends keyof BotEventListeners>(
|
|
||||||
event: K,
|
|
||||||
listener: BotEventListener<K>
|
|
||||||
): void {
|
|
||||||
if (!this.eventListeners[event]) {
|
|
||||||
this.eventListeners[event] = [];
|
|
||||||
}
|
|
||||||
(this.eventListeners[event] as BotEventListener<K>[]).push(listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
public off<K extends keyof BotEventListeners>(
|
|
||||||
event: K,
|
|
||||||
listener: BotEventListener<K>
|
|
||||||
): boolean {
|
|
||||||
const listeners = this.eventListeners[event];
|
|
||||||
if (!listeners) return false;
|
|
||||||
|
|
||||||
const index = (listeners as BotEventListener<K>[]).indexOf(listener);
|
|
||||||
if (index > -1) {
|
|
||||||
(listeners as BotEventListener<K>[]).splice(index, 1);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public once<K extends keyof BotEventListeners>(
|
|
||||||
event: K,
|
|
||||||
listener: BotEventListener<K>
|
|
||||||
): void {
|
|
||||||
const onceWrapper = ((...args: Parameters<BotEventListener<K>>) => {
|
|
||||||
this.off(event, onceWrapper as BotEventListener<K>);
|
|
||||||
(listener as (...args: unknown[]) => void)(...args);
|
|
||||||
}) as BotEventListener<K>;
|
|
||||||
|
|
||||||
this.on(event, onceWrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
private emit<K extends keyof BotEventListeners>(
|
|
||||||
event: K,
|
|
||||||
...args: Parameters<BotEventListener<K>>
|
|
||||||
): void {
|
|
||||||
const listeners = this.eventListeners[event];
|
|
||||||
if (listeners) {
|
|
||||||
for (const listener of listeners as BotEventListener<K>[]) {
|
|
||||||
try {
|
|
||||||
(listener as (...args: unknown[]) => void)(...args);
|
|
||||||
} catch (error) {
|
|
||||||
this.log.error(
|
|
||||||
`Error in event listener for ${String(event)}:`,
|
|
||||||
error
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
class methods
|
class methods
|
||||||
*/
|
*/
|
||||||
@@ -196,6 +137,65 @@ export class Bot {
|
|||||||
this.emit('voiceStateUpdate', oldState, newState);
|
this.emit('voiceStateUpdate', oldState, newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
registerable event system
|
||||||
|
*/
|
||||||
|
public on<K extends keyof BotEventListeners>(
|
||||||
|
event: K,
|
||||||
|
listener: BotEventListener<K>
|
||||||
|
): void {
|
||||||
|
if (!this.eventListeners[event]) {
|
||||||
|
this.eventListeners[event] = [];
|
||||||
|
}
|
||||||
|
(this.eventListeners[event] as BotEventListener<K>[]).push(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public off<K extends keyof BotEventListeners>(
|
||||||
|
event: K,
|
||||||
|
listener: BotEventListener<K>
|
||||||
|
): boolean {
|
||||||
|
const listeners = this.eventListeners[event];
|
||||||
|
if (!listeners) return false;
|
||||||
|
|
||||||
|
const index = (listeners as BotEventListener<K>[]).indexOf(listener);
|
||||||
|
if (index > -1) {
|
||||||
|
(listeners as BotEventListener<K>[]).splice(index, 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public once<K extends keyof BotEventListeners>(
|
||||||
|
event: K,
|
||||||
|
listener: BotEventListener<K>
|
||||||
|
): void {
|
||||||
|
const onceWrapper = ((...args: Parameters<BotEventListener<K>>) => {
|
||||||
|
this.off(event, onceWrapper as BotEventListener<K>);
|
||||||
|
(listener as (...args: unknown[]) => void)(...args);
|
||||||
|
}) as BotEventListener<K>;
|
||||||
|
|
||||||
|
this.on(event, onceWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
private emit<K extends keyof BotEventListeners>(
|
||||||
|
event: K,
|
||||||
|
...args: Parameters<BotEventListener<K>>
|
||||||
|
): void {
|
||||||
|
const listeners = this.eventListeners[event];
|
||||||
|
if (listeners) {
|
||||||
|
for (const listener of listeners as BotEventListener<K>[]) {
|
||||||
|
try {
|
||||||
|
(listener as (...args: unknown[]) => void)(...args);
|
||||||
|
} catch (error) {
|
||||||
|
this.log.error(
|
||||||
|
`Error in event listener for ${String(event)}:`,
|
||||||
|
error
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
singleton logic
|
singleton logic
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user