我正在使用Discord.JS库发出扫雷命令。它使用args来收集用户对Minesweeper板的输入。 (即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
老实说,我不太确定从现在开始该怎么做,我试图更改参数定义,并且由于代码看起来很完美,所以我不妨在这里问。
答案 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
}
};
};