如何避免一次发送两个命令?

How can I avoid sending two commands at once?

我正在创建一个 discord 机器人,它的部分命令是掷不同值的骰子(d6、d10、d20、d100)。我是这样设置的:

const Discord = require('discord.js');
const client = new Discord.Client();

function commandIs (str, msg){
    return msg.content.toLowerCase().startsWith("!" + str)
} //Function that shortens all response commands.

client.on ('message', message => {
  if(commandIs("rolld6", message)){
    var result = Math.floor(Math.random() * ((6 - 1) + 1) + 1); 
    message.channel.sendMessage (result);
  } //rolls a d6

  if(commandIs("rolld10", message)){
    var result = Math.floor(Math.random() * ((10 - 1) + 1) + 1); 
    message.channel.sendMessage (result);
  } //rolls a d10

  if(commandIs("rolld20", message)){
    var result = Math.floor(Math.random() * ((20 - 1) + 1) + 1); 
    message.channel.sendMessage (result);
  } //rolls a d20

  if(commandIs("rolld100", message)){
    var result = Math.floor(Math.random() * ((100 - 1) + 1) + 1); 
    message.channel.sendMessage (result);
  } //rolls a d100

})   
client.login('<Discord bot token>'); //Bot token so it can login to Discord

我遇到的问题是,当我发送“!rolld100”时,机器人会像我同时发送“!rolld10”和“!rolld100”一样回答,因为 10 在 100 中。

任何可能的修复?我也是 javascript 的新手,所以如果您能解释一下您的解决方案的作用,那将对我有很大帮助。

代码似乎有点复杂,有重复的代码。您可以使用正则表达式

将其简化为几行代码
const Discord = require('discord.js');
const client = new Discord.Client();

client.on ('message', message => {

  const rollMatch = message.match(/roll(\d+)\s/)
  if (rollMatch) {
    const sides = Number(rollMatch)
    var result = Math.floor(Math.random() * sides + 1); 
    message.channel.sendMessage (result);
  } 

})   
client.login('<Discord bot token>'); //Bot token so it can login to Discord

现在,如果您想按自己的方式进行。你基本上需要做

if(commandIs("rolld100", message)){ }
else if(commandIs("rolld10", message)){ }
else if(commandIs("rolld20", message)){ }
else if(commandIs("rolld6", message)){ }