I’m trying to work out how to update variables that are declared at runtime.
In my code it’s a simple random number generator. It works but doesn’t update, i.e. if the slash command /rng is used, alpha never updates past the initial number it picked, so it just repeats the same number at each use of /rng and I understand why. At the initial run, alpha is updated to a random number but it’s never updated again unless the script is ran again which isn’t possible in it’s current configuration unless I restart the bot.
I’m not even looking for someone to fix the code, more so a concept I can go look up or read into so I can learn.
const { SlashCommandBuilder } = require('discord.js'); const alpha = Math.floor(Math.random() * 11); console.log(alpha); module.exports = { data: new SlashCommandBuilder() .setName('rng') .setDescription('Number between 1 & 10'), async execute(interaction) { await interaction.reply(`${alpha}`); }, };
Advertisement
Answer
Everytime you run the script with slash command, it is running the code inside module.exports
. In other words, variable outside module.exports
are constants, which will be only declared once when the bot started up.
To get a different variable each of the time using the command, simply put const alpha ...
inside module.exports
, within the execute
function.
module.exports = { data: new SlashCommandBuilder() .setName('rng') .setDescription('Number between 1 & 10'), async execute(interaction) { const alpha = Math.floor(Math.random() * 11); console.log(alpha); await interaction.reply(`${alpha}`); }, };