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!