Discord.js DND 掷骰子输入更改号码

Discord.js DND Dice Roll Input Change Number

我在我的机器人上制作了一个“有效”的掷骰子功能。可以很好地满足我的需要,但我想知道如何做到这一点,所以取决于 discord 中所说的内容。

所以说 !rolld6 会在 var 响应中使用 6 而不是 20。

if (message.content.toLowerCase().includes("!rolld20")) {
const ayy = client.emojis.cache.find(emoji => emoji.name === "diceroll");
var response = [Math.floor(Math.random() * ((20 - 1) + 1) + 1)];
            message.channel.send(`${ayy}` + `Rolling.`)
                .then(msg => {
                    setTimeout(function() {
                        msg.edit(`${ayy}` + `Rolling..`)
                    }, 1000);
                    setTimeout(function() {
                        msg.edit(`${ayy}` + `Rolling...`)
                    }, 2000)
                    setTimeout(function() {
                        msg.edit(`${ayy}` + `Rolling....`)
                    }, 3000)    
            setTimeout(function() {
                        
            msg.edit(`${ayy}` + " Rolled... " + response + " " + `${ayy}`).then().catch(console.error)  
                    }, 4000)    
            
                })


return;
}

甚至不确定我会搜索什么来解决这个问题,所以非常感谢您的帮助!

使用正则表达式代替.includes,然后提取d之后的数字进行随机化。

您不需要减去 1,然后在之后立即加 1 - 这些会抵消,您也不需要将结果放入数组 - 只需将生成的随机数插入到消息中就可以了。

const match = message.content.match(/!rolld(\d+)/i);
if (match) {
    const die = match[1];
    const response = 1 + Math.floor(Math.random() * die);    
    const ayy = client.emojis.cache.find(emoji => emoji.name === "diceroll");