NodeJS discord bot命令获取错误无法发送空消息

时间:2017-11-19 21:55:08

标签: javascript node.js bots discord

我正在制作一个不和谐机器人,我的一个命令无效。我希望机器人能够复制用户在命令中说的内容,但我收到错误: 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;

2 个答案:

答案 0 :(得分:1)

在向频道发送非字符串消息时,我发现了同样的错误,例如尝试发送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(除非您在块外声明)。

答案 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++)应该可以解决您的问题