@shadow-dev/core
Version:
A modular core framework for Discord bot development, providing commands, buttons, menus, middleware, and more.
74 lines (73 loc) • 2.89 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerModule = registerModule;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const glob_1 = require("glob");
const _1 = require("./");
async function registerModule(directory, manager, client, debug) {
if (debug)
console.log(`🔍 Scanning for ${directory}...`);
const baseDir = process.cwd();
const isDev = fs_1.default.existsSync(path_1.default.join(baseDir, `src/${directory}`));
const dir = isDev ? `src/${directory}` : `dist/${directory}`;
if (debug)
console.log(`🟢 Using ${directory} directory:`, dir);
const ext = isDev ? "ts" : "js";
const files = await (0, glob_1.glob)(`**/*.${ext}`, {
cwd: path_1.default.join(baseDir, dir),
absolute: true,
});
if (debug)
console.log(`🔍 Found ${directory} files:`, files);
if (files.length === 0) {
console.warn(`⚠️ No ${directory} files found. Check your folder structure.`);
}
for (const filePath of files) {
try {
const module = await (0, _1.importFile)(filePath);
if (!module.name && !module.event && !module.customId) {
if (debug)
console.warn(`⚠️ Skipping unknown module: ${filePath}`);
continue;
}
if (module.name) {
await manager.registerCommand(module);
if (debug)
console.log(`✅ Registered command: ${module.name}`);
}
else if (module.event) {
if (!module.event || typeof module.run !== "function") {
console.warn(`⚠️ Skipping invalid event module: ${filePath}`);
continue;
}
const runHandler = module.run;
const eventName = module.event;
if (module.once) {
client.once(eventName, (...args) => {
runHandler(...args);
});
}
else {
client.on(eventName, (...args) => runHandler(...args));
}
}
else if (module.customId) {
if (directory == "buttons") {
manager.registerButton(module);
}
else if (directory == "menus") {
manager.registerMenu(module);
}
}
}
catch (error) {
console.error(`❌ Error loading ${filePath}:`, error instanceof Error ? error.message : error);
if (debug)
console.error(error);
}
}
}