Tengo este bot de Discord aquí que contiene un comando aleatorio - /random (construido con new SlashCommandBuilder ) - y consta de dos opciones de cadena requeridas: valores min y max .
Este código...
run: async (bot, interaction, args) => { const min = interaction.options.getString('min').replace(/[^\d.-]/g, '') const max = interaction.options.getString('max').replace(/[^\d.-]/g, '') parseFloat(min, parseFloat(max)) random = Math.floor(Math.random() * (max - min) + min) console.log(min, max) interaction.followUp({ content: `${random}` }) } ... extrae las cadenas de la interacción del usuario y las analiza en flotantes. El resultado esperado consiste en un número aleatorio entre el valor min y el valor max .
Sin embargo, el aleatorizador no usa el valor min o max y en su lugar imprime un número aleatorio independientemente de lo que ingrese el usuario.
Predigo que es un método bastante ineficiente de un comando aleatorio. Amablemente sugiero ayuda, y (si) alguna será muy apreciada.
Nota: No se produce un error al ejecutar el comando.
Debería usar interaction.options.getNumber() en su lugar en su controlador de comandos; así ya es un número:
let min = interaction.options.getNumber('min'); let max = interaction.options.getNumber('max'); function randomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } await interaction.reply(`Your random number is: ${randomInt(min, max)}`); Asegúrese de agregar las opciones con addNumberOption() en su archivo deployment deploy-commands.js (o como lo haya llamado:
new SlashCommandBuilder() .setName('random') .setDescription('Generates a random number!') .addNumberOption((option) => option .setName('min') .setDescription('Enter the minimum number') .setRequired(true), ) .addNumberOption((option) => option .setName('max') .setDescription('Enter the maximum number') .setRequired(true), )