es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El gestor de comandos de interacciones de discord.js v13 ha fallado.

Así que estoy tratando de agregar interacción a mi bot de Discord que ya tiene un manejador de comandos y eventos. Seguí la guía de discord.js y agregar los comandos funcionó bien. Pero ahora estoy tratando de hacer la parte de manejo de comandos, pero da el error:

TypeError: command.execute no es una función

Mi código en index.js:

console.clear();

const fs = require('fs');

const { Collection } = require('discord.js');

const Client = require("./Structures/Client.js");

const config = require("./Data/config.json");

const client = new Client();

client.commands = new Collection();
const commandFiles = fs.readdirSync('./src/iCommands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./iCommands/${file}`);
    client.commands.set(command.data.name, command);
}

client.on("interactionCreate", async interaction => {
    if(!interaction.isCommand()) return;

    const command = client.commands.get(interaction.commandName);

    if(!command) return;

    try {
        await command.execute(interaction);
    } catch (error) {
        console.log(error);
        await interaction.reply({ content: '¡Hubo un error al ejecutar este comando!', ephemeral: true });
    }
});

client.start(config.token);

Mi código en deploy-commands.js:

const fs = require('fs');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./Data/config.json');

const commands = [];
const commandFiles = fs.readdirSync('./src/iCommands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./iCommands/${file}`);
    commands.push(command.data.toJSON());
}

const rest = new REST({ version: '9' }).setToken(token);

rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands })
    .then(() => console.log('Comandos de aplicación registrados exitosamente.'))
    .catch(console.error);

Y luego para los comandos en sí, solo el código estándar proporcionado por la guía. También lo intenté en un trozo de código en blanco y allí funcionó bien.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “TypeError: command.execute no es una función” suele ocurrir cuando la función “execute” no está definida correctamente en el archivo de comando. Verifica que la función “execute” esté correctamente definida dentro del archivo de comando y que se exporte como un módulo.

    Si ya has verificado el archivo de comando, intenta revisar las rutas de los archivos index.js y deploy-commands.js para asegurarte de que estén apuntando a los directorios correctos.

    También puede ser útil probar tu código en un fragmento de código en blanco, ya que el error no ocurre allí.

Comments are closed.