【问题标题】:using a variable in random to define max number generated使用随机变量来定义生成的最大数量
【发布时间】:2020-02-09 15:25:03
【问题描述】:

我正在尝试制作一个不和谐的机器人,让用户与用户一起掷骰子一个用户定义的最大数字

if(cmd === `${prefix}roll`|| cmd === `${prefix}Roll`){
       let ag = cmd.slice(5);
       message.channel.send("Roll The Dice!");
       var roll = Math.floor((Math.random()* ag) + 1);
       message.channel.send(roll);
    }

将“Math.random()* ag”中的 ag 替换为 10 之类的东西会起作用,如果我如何让它使用 var,我会感到困惑 这不起作用,并且不会在终端中返回任何错误

【问题讨论】:

  • cmd 的样本值是多少?是否进入if 块?

标签: javascript


【解决方案1】:

问题在于ag 的值。如果您滑动cmd,它将是一个字符串

我假设您想在1-6 之间创建一个随机数

在这种情况下,你可以这样做

if(cmd === `${prefix}roll`|| cmd === `${prefix}Roll`){
       var ag = 6; // slice returns a string and the random generator works with a number.
       message.channel.send("Roll The Dice!");
       var roll = Math.floor((Math.random()* ag) + 1);
       message.channel.send(roll);
    }

更新

如果用户在 cmd 中指定一个数字为!roll20,则上面的代码根本不会执行,因为 if (cmd ===${prefix}roll) 检查

if(cmd.startsWith(`${prefix}roll`) || cmd.startsWith(`${prefix}Roll`)){
       var ag = /\d+/g.exec(cmd); // get the digits in the value
       ag = ag ? ag[0] : 6 // check if there is a value or default to 6 
       message.channel.send("Roll The Dice!");
       var roll = Math.floor((Math.random()* ag) + 1);
       message.channel.send(roll);
    }

【讨论】:

  • 所以如果用户剂量!roll20 我怎么能把 20 变成一个 intiger
  • 如果它解决了您的问题,请考虑接受答案
  • 我会试试这个给我一点时间
猜你喜欢
  • 2012-06-18
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多