我正在制作一个不和谐机器人,我的一个命令无效。我希望机器人能够复制用户在命令中说的内容,但我收到错误: 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;
答案 0 :(得分:1)
在向频道发送非字符串消息时,我发现了同样的错误,例如尝试发送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
(除非您在块外声明)。
答案 1 :(得分:1)
您的原始for循环for(i=0;i==args.length-1;i++)
表示将i设置为0;然后,只要i等于数组中参数的数量,请执行以下代码,然后将i加1。我等于0,所以它永远不等于参数的数量,因此代码永远不会运行。只需将for(i=0;i==args.length-1;i++)
更改为for(i=0;i<args.length-1;i++)
应该可以解决您的问题