Add Discord.js bot base with prefix commands and Winston logging

Co-authored-by: yhqe <139268606+yhqe@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]andyhqe committed 2026-03-12 23:32:21 +00:00
1 parent 8bd000a57a
commit e8049008eb
12 files changed
+1076 -2

No files matched your search

+48
View File
@@ -0,0 +1,48 @@
'use strict';
const fs = require('fs');
const path = require('path');
const logger = require('../utils/logger');
/**
* Loads all event files from src/events and registers them on the client.
* Each event file must export: { name, once?, execute }
*
* @param {import('discord.js').Client} client
*/
function loadEvents(client) {
const eventsPath = path.join(__dirname, '..', 'events');
const eventFiles = fs
.readdirSync(eventsPath)
.filter((file) => file.endsWith('.js'));
let loaded = 0;
for (const file of eventFiles) {
try {
const event = require(path.join(eventsPath, file));
if (!event.name || typeof event.execute !== 'function') {
logger.warn(
`[EventHandler] Skipping ${file}: missing "name" or "execute".`,
);
continue;
}
if (event.once) {
client.once(event.name, (...args) => event.execute(client, ...args));
} else {
client.on(event.name, (...args) => event.execute(client, ...args));
}
logger.debug(`[EventHandler] Registered event: ${event.name}`);
loaded++;
} catch (err) {
logger.error(`[EventHandler] Failed to load ${file}:`, err);
}
}
logger.info(`[EventHandler] ${loaded} event(s) registered.`);
}
module.exports = { loadEvents };