UNPKG

@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
"use strict"; 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); } } }