UNPKG

rashi-discord-bot-lib

Version:

🚀 Powerful Discord bot framework with built-in database, event handling, and utilities

71 lines • 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventLoader = void 0; const FileLoader_1 = require("../utils/FileLoader"); const Logger_1 = require("../utils/Logger"); class EventLoader { logger; fileLoader; constructor(logger) { this.logger = logger || new Logger_1.Logger(); this.fileLoader = new FileLoader_1.FileLoader(); } async loadEvents(client, eventsPath, recursive = true, blacklist = []) { try { const result = await this.fileLoader.loadFiles(eventsPath, { extensions: ['.js', '.ts'], recursive, blacklist, requireDefault: true }); let registeredCount = 0; for (const event of result.files) { if (this.validateEvent(event)) { this.registerEvent(client, event); registeredCount++; } } if (result.errors.length > 0) { this.logger.warn(`Failed to load ${result.errors.length} event files`); } return registeredCount; } catch (error) { this.logger.error('Failed to load events:', error); return 0; } } validateEvent(event) { if (!event || typeof event !== 'object') { this.logger.warn('Invalid event: not an object'); return false; } if (!event.name || typeof event.name !== 'string') { this.logger.warn('Invalid event: missing or invalid name'); return false; } if (!event.execute || typeof event.execute !== 'function') { this.logger.warn(`Invalid event ${event.name}: missing or invalid execute function`); return false; } return true; } registerEvent(client, event) { if (event.once) { client.once(event.name, (...args) => this.executeEvent(event, args)); } else { client.on(event.name, (...args) => this.executeEvent(event, args)); } } async executeEvent(event, args) { try { await event.execute(...args); } catch (error) { this.logger.error(`Error executing event ${event.name}:`, error); } } } exports.EventLoader = EventLoader; //# sourceMappingURL=EventLoader.js.map