1

I'm trying to code a dice roller function for my Discord Bot, and I'm using a library called chance.js, and when I try to roll a normal dice (example 1d8, 1d20, 1d100) it works, but I want to add a feature that if I write the amount to sum up to the value of the dice, and when I try to execute it, it returns undefined. Also in the chance.js file, the dice format must be like this chance.rpg(#d#). Here's my code:

const Chance = require("chance")
const { Formatters } = require('discord.js')

module.exports = {
    name: 'roll',
    async execute(message, args) {
        var chance = new Chance()
        const txt = 'ao rolla'
        const argsQ = message.content.slice(txt.length).trim().split("")
        
        if (!argsQ || isNaN(argsQ[0]) || argsQ.length > 7 || !argsQ[2] || argsQ[1] !== 'd' || isNaN(argsQ[2])) {
            message.reply('Non valido, deve essere ' + Formatters.inlineCode('<Numero di dadi> + d + <Tipo di dado>'))
        } else {
            var dice

            switch(`${argsQ}`) {
                case `${argsQ[0]},d,${argsQ[2]}`:
                    dice = chance.rpg(`${argsQ[0]}d${argsQ[2]}`)

                    message.channel.send(`bono che sto a rolla' ${argsQ[0]}d${argsQ[2]}... <a:d20:939583966166523904>`).then(msg => {
                        setTimeout(() => msg.delete(), 2770)
                    })
                    break;
                case `${argsQ[0]},d,${argsQ[2]},${argsQ[3]}`:
                    if (isNaN(argsQ[3])) return message.reply('Non valido, deve essere ' + Formatters.inlineCode('<Numero di dadi> + d + <Tipo di dado>'))

                    dice = chance.rpg(`${argsQ[0]}d${argsQ[2]}${argsQ[3]}`)

                    message.channel.send(`bono che sto a rolla' ${argsQ[0]}d${argsQ[2]}${argsQ[3]}... <a:d20:939583966166523904>`).then(msg => {
                        setTimeout(() => msg.delete(), 2770)
                    })

                    break;
                case `${argsQ[0]},d,${argsQ[2]},${argsQ[3]},${argsQ[4]}`:
                    if (isNaN(argsQ[3]) || isNaN(argsQ[4])) return message.reply('Non valido, deve essere ' + Formatters.inlineCode('<Numero di dadi> + d + <Tipo di dado>'))

                    dice = chance.rpg(`${argsQ[0]}d${argsQ[2]}${argsQ[3]}${argsQ[4]}`)

                    message.channel.send(`bono che sto a rolla' ${argsQ[0]}d${argsQ[2]}${argsQ[3]}${argsQ[4]}... <a:d20:939583966166523904>`).then(msg => {
                        setTimeout(() => msg.delete(), 2770)
                    })

                    break;
            }
            if (argsQ[5] && argsQ[6] && argsQ[5] == 'p' && !isNaN(argsQ[6])) {
                message.reply(`(${dice}) + (${argsQ[6]}) = ${dice + argsQ[6]}`) 
            } else {
                setTimeout(() => {
                    message.reply(`${dice}`)
                }, 3000)    
            }
        }
    }
}

Thanks!

Tyler2P
  • 2,324
  • 26
  • 22
  • 31
clapmemereview
  • 371
  • 1
  • 4
  • 14
  • Does this answer your question? [Generating random whole numbers in JavaScript in a specific range?](https://stackoverflow.com/questions/1527803/generating-random-whole-numbers-in-javascript-in-a-specific-range) – ControlAltDel Feb 06 '22 at 01:21

0 Answers0