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');
}
}
}
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 utilizainteraction.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:En este código modificado, obtenemos el animal seleccionado utilizando
interaction.options.getString('animal')
y lo almacenamos en una variable llamadaanimal
. 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 llamadaimageUrl
. Si se realiza una selección inválida, enviamos un mensaje de error utilizandointeraction.reply()
.Finalmente, utilizamos
interaction.reply()
nuevamente para enviar un mensaje incrustado que incluye la imagen del animal seleccionado. El arrayembeds
incluye un objeto con una propiedadimage
que contiene la URL de la imagen que se enviará.