Add events module with dashboard UI, scheduling, signups, and settings updates; extend env/readme.
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { Client } from 'discord.js';
|
||||
import { EventHandler } from '../utils/types.js';
|
||||
import { logger } from '../utils/logger.js';
|
||||
import { EventHandler } from '../utils/types';
|
||||
import { logger } from '../utils/logger';
|
||||
import { context } from '../config/context';
|
||||
|
||||
export class EventHandlerService {
|
||||
constructor(private client: Client) {}
|
||||
@@ -15,9 +16,15 @@ export class EventHandlerService {
|
||||
const event: EventHandler = mod.default;
|
||||
if (!event?.name || !event.execute) continue;
|
||||
if (event.once) {
|
||||
this.client.once(event.name, (...args) => event.execute(...args));
|
||||
this.client.once(event.name, (...args) => {
|
||||
this.track(event.name, args);
|
||||
event.execute(...args);
|
||||
});
|
||||
} else {
|
||||
this.client.on(event.name, (...args) => event.execute(...args));
|
||||
this.client.on(event.name, (...args) => {
|
||||
this.track(event.name, args);
|
||||
event.execute(...args);
|
||||
});
|
||||
}
|
||||
logger.info(`Bound event ${event.name}`);
|
||||
}
|
||||
@@ -33,4 +40,16 @@ export class EventHandlerService {
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
private track(name: string, args: any[]) {
|
||||
try {
|
||||
const guildId =
|
||||
(args[0]?.guild?.id as string | undefined) ||
|
||||
(args[0]?.guildId as string | undefined) ||
|
||||
(args[0]?.message?.guildId as string | undefined);
|
||||
context.admin.trackEvent(name, guildId);
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user