2017-04-05 81 views
2

我想編寫一個簡單的Discord與Discord,js-commando庫的機器人我得到它的大部分工作到目前爲止,但我困在此刻的問題,所以我得到了這個命令在這裏你可以做!滾動,它會隨機選擇從1數到6,但我想讓它多一點的定製所以這裏是什麼樣子不和諧bot自定義命令JS

!卷(卷1至6)

!輥25(輥從1到25)

!輥100 200(羅爾斯從100到200)

問題是當我嘗試做!roll 25我的驗證一直說這不是一個有效的數字,但所有其他命令工作得很好它只發生在我做!roll,然後一些數字,我不明白爲什麼它不工作很可能是一個簡單的辦法提前感謝

const commando = require('discord.js-commando') 
const _ = require('lodash') 

class DiceRollCommand extends commando.Command { 

    constructor(bot) { 
     super(bot, { 
      name: 'roll', 
      group: 'random', 
      memberName: 'roll', 
      description: 'Rolls a dice.' 
     }) 
    } 

    async run(message, args) { 
     let roll = args.split(' ') 
     let hasNumber = /^[0-9]$/ 

     if (roll[0] || roll[1]) { 
      if (!hasNumber.test(roll[0]) || !hasNumber.test(roll[1])) { 
       console.log('roll[1] -> '+ !hasNumber.test(roll[0])) // returns true 
       console.log('roll[2] -> '+ !hasNumber.test(roll[1])) // returns true 

       message.reply('[DEBUG] Syntax Error input must be a number') 
       return 
      } 
     } 
     if (roll.length >= 3) { 
      message.reply('[DEBUG] Syntax Error cannot use more than 2 parameters') 
      return 
     } 
     if (roll[0] > 1000000 || roll[1] > 1000000) { 
      message.reply('Unfortunately for you, computers have a limited amount of memory, so unless you want me to run out, stop sending ludicrous numbers. Thanks.') 
      return 
     } 
     if (message.content.match(/^!roll$/)) { 
      message.reply('rolled ' + _.random(1, 6)) 
     } 
     if (message.content.match(/^!roll [0-9]+\b/)) { 
      message.reply('rolled ' + _.random(1, roll[0])) 
     } 
     if (message.content.match(/^!roll ([0-9]*) ([0-9]*)+\b/)) { 
      message.reply('rolled ' + _.random(roll[0], roll[1])) 
     } 

    } 

} 

module.exports = DiceRollCommand 

回答

0

嘗試改變

if (!hasNumber.test(roll[0]) || !hasNumber.test(roll[1])) { 

if (!hasNumber.test(roll[0]) && !hasNumber.test(roll[1])) { 

,試着改變你的hasNumber正則表達式來/^[0-9]+$/因爲否則它可能會在任意數量不能超過一個數字。

+0

謝謝你這麼做;) – John

+0

這仍然是錯誤的,因爲[「b」,「3」]將通過數字驗證 – xDreamCoding

+0

你是什麼意思由[「b」,「3」]?據我所知,現在所有的作品 – John

0
let hasNumber = /^[0-9]$/ 

您正則表達式只是測試了1位。嘗試:

let hasNumber = /^[0-9]+$/