Add events module with dashboard UI, scheduling, signups, and settings updates; extend env/readme.

This commit is contained in:
Pascal Prießnitz
2025-12-02 23:52:10 +01:00
parent 874b01c999
commit 829d160164
578 changed files with 37647 additions and 11590 deletions

View File

@@ -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 */
}
}
}