solara-testing-beta
Version:
A modern, customizable, and lightweight Discord framework.
75 lines • 3.2 kB
JavaScript
;
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