NodeJS discord bot 命令出现错误无法发送空消息
NodeJS discord bot commands getting error Cannot send an empty message
我正在制作一个不和谐的机器人,但我的一个命令不起作用。我希望机器人复制用户在命令中所说的内容,但我收到错误:UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 ID:2):DiscordAPIError:无法发送空消息
我也尝试使用 console.log() 但那也是空的,所以我知道出了点问题,但我不确定是什么。
case "say":
if(!args[1] == " "|| !args[1] == ""){
// message.channel.sendMessage(args[1]);
words = [];
for(i=0;i==args.length-1;i++){
words.append(args[i]);
}
var wordsString = words.join(" and ");
console.warn("Bot said: "+wordsString);
message.channel.sendMessage(wordsString);
}
break;
我在向频道发送非字符串消息时遇到了同样的错误,例如尝试发送 Array
或 Object
。
但是,最不言自明的一个,就像这里的情况一样,您正在尝试向频道发送一个空字符串。
case "say":
if (!args[1] == " " && !args[1] == "") {
// message.channel.sendMessage(args[1]);
let words = [];
for (let i = 0; i == args.length - 1; i++) {
words.append(args[i]);
}
var wordsString = words.join(" and ");
console.warn("Bot said: "+ wordsString);
message.channel.sendMessage(wordsString);
}
break;
正如另一位用户指出的那样,您想从 if 语句中省略空格和空字符串。因此,将 ||
更改为 &&
即可完成此操作。
旁注
您从未将 i
声明为变量,或 words
(除非您在块外声明)。
你原来的 for 循环 for(i=0;i==args.length-1;i++)
说要设置 i 等于 0;然后只要 i 等于数组中参数的数量,就执行以下代码,然后将 i 增加 1。 i 等于 0,所以它永远不会等于参数的数量,因此代码永远不会得到 运行。只需将 for(i=0;i==args.length-1;i++)
更改为 for(i=0;i<args.length-1;i++)
即可解决您的问题
我正在制作一个不和谐的机器人,但我的一个命令不起作用。我希望机器人复制用户在命令中所说的内容,但我收到错误:UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 ID:2):DiscordAPIError:无法发送空消息 我也尝试使用 console.log() 但那也是空的,所以我知道出了点问题,但我不确定是什么。
case "say":
if(!args[1] == " "|| !args[1] == ""){
// message.channel.sendMessage(args[1]);
words = [];
for(i=0;i==args.length-1;i++){
words.append(args[i]);
}
var wordsString = words.join(" and ");
console.warn("Bot said: "+wordsString);
message.channel.sendMessage(wordsString);
}
break;
我在向频道发送非字符串消息时遇到了同样的错误,例如尝试发送 Array
或 Object
。
但是,最不言自明的一个,就像这里的情况一样,您正在尝试向频道发送一个空字符串。
case "say":
if (!args[1] == " " && !args[1] == "") {
// message.channel.sendMessage(args[1]);
let words = [];
for (let i = 0; i == args.length - 1; i++) {
words.append(args[i]);
}
var wordsString = words.join(" and ");
console.warn("Bot said: "+ wordsString);
message.channel.sendMessage(wordsString);
}
break;
正如另一位用户指出的那样,您想从 if 语句中省略空格和空字符串。因此,将 ||
更改为 &&
即可完成此操作。
旁注
您从未将 i
声明为变量,或 words
(除非您在块外声明)。
你原来的 for 循环 for(i=0;i==args.length-1;i++)
说要设置 i 等于 0;然后只要 i 等于数组中参数的数量,就执行以下代码,然后将 i 增加 1。 i 等于 0,所以它永远不会等于参数的数量,因此代码永远不会得到 运行。只需将 for(i=0;i==args.length-1;i++)
更改为 for(i=0;i<args.length-1;i++)
即可解决您的问题