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.

Discord.js v13 ofrece opciones para comandos de barra diagonal en sus configuraciones.

En discordjs.guide se explica cómo establecer opciones con elecciones. Sin embargo, no se explica cómo obtener la elección y cómo usarla en el código. Tengo un comando /animal con opciones (gato, perro, etc.) y cuando el usuario hace clic en perro, se envía una imagen de perro, lo mismo ocurre con el gato. Pero no sé dónde colocar el código para la imagen. Lo intenté y no funciona, muestra “Esta interacción falló”. ¿Cómo puedo hacerlo? Gracias (hay texto en lugar de imagen para hacer pruebas)

module.exports = {
    data: new SlashCommandBuilder()
        .setName('animal')
        .setDescription('Envía una imagen de un animal')
        .addStringOption(option =>
            option.setName('animal')
                .setDescription('Selecciona un animal para la foto')
                .setRequired(true)
                .addChoice('Gato', 'cat')
                .addChoice('Perro', 'dog')),
    async execute(interaction) {
        if (interaction.options.getString() === 'cat') {
            await interaction.reply('gato');
        } else if (interaction.options.getString() === 'dog') {
            await interaction.reply('perro');
        }
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la elección y utilizarla en tu código, puedes acceder a ella a través del objeto interaction.options. En el código proporcionado, se utiliza interaction.options.getString() para obtener el animal seleccionado como un string, que luego se puede utilizar en declaraciones condicionales para determinar qué imagen enviar.

    Para enviar la imagen, puedes utilizar el método interaction.reply() con un mensaje incrustado que incluya la URL de la imagen. Aquí tienes un ejemplo de cómo puedes modificar el código proporcionado para lograr esto:

    module.exports = {
        data: new SlashCommandBuilder()
            .setName('animal')
            .setDescription('Envía una imagen de un animal')
            .addStringOption(option =>
                option.setName('animal')
                    .setDescription('Selecciona un animal para la foto')
                    .setRequired(true)
                    .addChoice('Gato', 'gato')
                    .addChoice('Perro', 'perro')),
        async execute(interaction) {
    
            // obtenemos el animal seleccionado como un string
            const animal = interaction.options.getString('animal');
    
            // determinamos qué imagen enviar en función del animal seleccionado
            let imageUrl;
            switch (animal) {
                case 'gato':
                    imageUrl = 'https://ejemplo.com/gato.jpg';
                    break;
                case 'perro':
                    imageUrl = 'https://ejemplo.com/perro.jpg';
                    break;
                default:
                    // si se realiza una selección inválida, enviamos un mensaje de error
                    return interaction.reply('Selección inválida');
            }
    
            // enviamos el mensaje incrustado con la imagen del animal seleccionado
            await interaction.reply({ 
                embeds: [{
                    image: { url: imageUrl }
                }]
            });
        }
    }
    

    En este código modificado, obtenemos el animal seleccionado utilizando interaction.options.getString('animal') y lo almacenamos en una variable llamada animal. Luego, utilizamos una declaración switch para determinar la URL de imagen apropiada que se utilizará en función del animal seleccionado, y la almacenamos en una variable llamada imageUrl. Si se realiza una selección inválida, enviamos un mensaje de error utilizando interaction.reply().

    Finalmente, utilizamos interaction.reply() nuevamente para enviar un mensaje incrustado que incluye la imagen del animal seleccionado. El array embeds incluye un objeto con una propiedad image que contiene la URL de la imagen que se enviará.

Comments are closed.