如何修复“无法读取未定义的属性'length'的未定义”和Args输入在我的扫雷命令中不起作用-Discord.js

时间:2019-11-06 12:42:37

标签: javascript discord.js

我正在使用Discord.JS库发出扫雷命令。它使用args来收集用户对Mi​​nesweeper板的输入。 (即a3,a3f [f用于标志])。但是,该命令运行得很完美,它在面板的顶部和侧面显示了字母和数字。我遇到的主要问题是该命令不会接受我输入的那些响应arg输入。这就是用户将能够玩的方式。

回合结束后(无任何输入”),它返回错误“无法读取未定义的属性'length'的未定义”错误。这在一定程度上与这些代码行有关。

      const filter = msgs => {
        const param = msgs.content.toLowerCase().split(" ");
        return param.length === 2 && alphabet.includes(param[0]) && parseInt(param[1], 10) < 7 && !answered.includes(param.join("")) && msgs.author.id === msg.author.id;
      };




      param[0] = alphabet.includes[param[0]];
      param[1] = parseInt(param[1], 10) - 1;
      if (board[param[1]][param[0]] === "?") {
        for (let i = 0; i < board.length; i++) {
          for (let j = 0; j < board[i].length; i++) {
            if (board[i][j] === "?") showboard[i][j] = "?";
          }
        }

我认为这是导致我的扫雷命令问题的原因。我不确定100%,但是我认为我可以通过将参数定义为args [0]

来解决此问题

我在这里有命令的完整代码: https://natebot-haste.glitch.me/lusarovisa.js

老实说,我不太确定从现在开始该怎么做,我试图更改参数定义,并且由于代码看起来很完美,所以我不妨在这里问。

1 个答案:

答案 0 :(得分:0)

由于Params为null或未定义似乎是一个问题,如何进行这样的检查?

 const filter = msgs => {
        const param = msgs.content.toLowerCase().split("");
        if(param && param.length === 2) {
            return alphabet.includes(param[0]) && parseInt(param[1], 10) < 7 && !answered.includes(param.join("")) && msgs.author.id === msg.author.id;
        }
        else {
            return false
        }
      };
};