Quiero hacer un comando de barra inclinada de Discord donde debe seleccionar una opción y luego otra opción.
Pero dependiendo de qué elección se haga en primer lugar (en la elección 1), las opciones/valores en la elección 2 están cambiando.
¿Es eso posible?
Ejemplo:
/command choice1 choice2
Si selecciono "A" en choice1 1, obtengo "Uno" y "Dos" como opciones en la opción.
Pero cuando selecciono "B" en choice1 1, obtendré "Tres" y "Cuatro" como choice2 opción 2 .
Saludos,
Pablo
Las opciones son valores predeterminados, que se establecen cuando se registra el comando y no se pueden cambiar posteriormente.
La forma de cambiar dinámicamente las opciones es a través de "autocompletar" o, según la situación, también podrían funcionar los "subcomandos".
Para configurar el autocompletado para cambiar en función de otros valores, debe acceder a interaction.options.get(choice2) para la opción1 e interaction.options.get(choice1) para la opción2 (la interacción aquí sería una AutocompletarInteracción)
Aquí hay un ejemplo:
client.on('interactionCreate', async interaction => {
if (!interaction.isAutocomplete()) return;
if (interaction.commandName === 'command') {
const focusedOption = interaction.options.getFocused(true);
let choices;
if (focusedOption.name === 'option1') {
choices = ["A", "B"];
}
if (focusedOption.name === 'option2') {
let option1 = interaction.options.get('option1')?.value;
if (option1 === "A") {
choices = ["One", "Two"];
}
else if (option1 === "B") {
choices = ["Three", "Four"];
}
else {
choices = ["One", "Two", "Three", "Four"];
}
}
const filtered = choices.filter(choice => choice.startsWith(focusedOption.value));
await interaction.respond(
filtered.map(choice => ({ name: choice, value: choice })),
);
}
});
Como con todas las interacciones, debe responder en 3 segundos. Pero no puede diferir AutocompleteInteractions, por lo que recomendaría .catch() ing la respuesta de interacción en caso de errores.
Vea aqui para mas informacion:
[1] https://discordjs.guide/interactions/autocomplete.html
[2] https://discord.js.org/#/docs/main/main/class/AutocompleteInteraction