UNPKG

solara-testing-beta

Version:

A modern, customizable, and lightweight Discord framework.

75 lines 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandHandler = void 0; const discord_js_1 = require("discord.js"); const Command_1 = require("../structures/Command"); const loader_1 = require("../utils/loader"); class CommandHandler { client; commands; aliases; constructor(client) { this.client = client; this.commands = new discord_js_1.Collection(); this.aliases = new discord_js_1.Collection(); } async loadCommands(dirs = ['src/commands']) { const loadedCommands = await (0, loader_1.loadCommands)(dirs); for (const cmdData of loadedCommands) { if (!cmdData || !cmdData.name || !cmdData.code) { console.warn(`⚠️ Skipping invalid command data:`, cmdData); continue; } try { const command = new Command_1.Command(cmdData); if (this.commands.has(command.name.toLowerCase())) { console.warn(`⚠️ Command "${command.name}" already exists. Overwriting.`); } if (!command.enabled) continue; this.commands.set(command.name.toLowerCase(), command); if (command.aliases) { command.aliases.forEach(alias => { if (this.aliases.has(alias.toLowerCase()) || this.commands.has(alias.toLowerCase())) { console.warn(`⚠️ Alias "${alias}" for command "${command.name}" conflicts with an existing command or alias. Skipping.`); } else { this.aliases.set(alias.toLowerCase(), command.name.toLowerCase()); } }); } } catch (error) { console.error(`❌ Failed to load command "${cmdData.name}": ${error.message}`); } } console.log(`✅ Loaded ${this.commands.size} commands.`); } getCommand(name) { const lowerName = name.toLowerCase(); return this.commands.get(lowerName) || this.commands.get(this.aliases.get(lowerName) || ''); } async registerSlashCommands() { const slashCommandsData = this.commands .filter(cmd => cmd.slash ?? true) .map(cmd => ({ name: cmd.name, description: cmd.description || 'No description provided.', options: cmd.options || [], })); if (slashCommandsData.length === 0) { console.log("ℹ️ No slash commands to register."); return; } try { console.log(`⏳ Registering ${slashCommandsData.length} application (/) commands.`); await this.client.application?.commands.set(slashCommandsData); console.log(`✅ Successfully registered ${slashCommandsData.length} application (/) commands.`); } catch (error) { console.error('❌ Failed to register application commands:', error); } } } exports.CommandHandler = CommandHandler; //# sourceMappingURL=CommandHandler.js.map