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;

我在向频道发送非字符串消息时遇到了同样的错误,例如尝试发送 ArrayObject

但是,最不言自明的一个,就像这里的情况一样,您正在尝试向频道发送一个空字符串。

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++) 即可解决您的问题