如何检测args是否为空(discord.js)



我正在为我的机器人执行8ball命令(-8ball(,但当用户只键入8ball命令时,机器人崩溃,我的代码是:

client.on('message', message => {
var command = "-8ball";
if (message.content.startsWith(command)) {
const args = message.content.slice(command.length).split(/ +/g);
let respuesta = ["Si", "No", "Tal vez", "Obvio", "Yo digo que si", "Yo digo que no", "Probablemente"]
var random = respuesta[Math.floor(Math.random() * respuesta.length)]
const embed = new Discord.MessageEmbed()
.addField("Pregunta:", `${args.join(" ")}`)
.addField("Respuesta:", `${random}`)
.setColor("RANDOM")
message.channel.send(embed)
}
});

如何检测args是否为空?

只有当args是一个数组并且不是空时,这才是真的

if (args instanceof Array && args.length)

如果你需要的话,可以用这个来绕过

if (!(args instanceof Array && args.length))

您可以通过简单地检查其length属性来检查空数组。

例如,如果args没有元素,则!args.length将返回true;如果中至少有1个或多个元素,则返回false

您可以使用它来检查args是否为空

if (!args.length) {
// Code To Execute If Args Is Empty
}

更多关于阵列

您可以只测试数组的第一个元素。

if(!args[0]) return;

由于0是错误的:

console.log(0 == false);

您可以使用Array.prototype.length(如果数组中没有元素,它将返回0(

client.on("message", (message) => {
var command = "-8ball";
if (message.content.startsWith(command)) {
const args = message.content.slice(command.length).split(/ +/g);
if (!args.length)
return message.channel.send('You did not input a question');
let respuesta = [
"Si",
"No",
"Tal vez",
"Obvio",
"Yo digo que si",
"Yo digo que no",
"Probablemente",
];
var random = respuesta[Math.floor(Math.random() * respuesta.length)];
const embed = new Discord.MessageEmbed()
.addField("Pregunta:", `${args.join(" ")}`)
.addField("Respuesta:", `${random}`)
.setColor("RANDOM");
message.channel.send(embed);
}
});

最新更新