如果语句无法正常运行discord.js

时间:2019-08-20 01:02:27

标签: node.js discord discord.js

因此,我有一个不和谐的机器人,带有一个脏话过滤器,我下达了添加和删除单词的命令。删除功能可以正常工作,但是在您键入c!setconf swearWords不带参数的情况下,添加操作将失败,它会发送一条错误消息,直到它在删除操作中起作用,但是在添加操作中,它会发送“未定义的词已被添加”

我已经查了一下代码,以及2种情况下的确切代码,所以我真的不知道这是什么错误。

    if(args[0] === "swearWords") {
      if(!args[1]) return message.channel.send(
      new Discord.RichEmbed()
      .setDescription(`Add banned words by typing \`${client.guildConf.prefix}csetconf swearWords add <word>\` and remove one by typing \`${client.guildConf.prefix}csetconf swearWords remove <word>\``)
      .setColor(vars.good)
      )
      if(args[1] === "add") {
        if(client.configs.get(message.guild.id, args[2], "swearWords")) {
          message.channel.send(
            new Discord.RichEmbed()
            .setDescription(`Word \`${args[2]}\` has been already added!`)
            .setColor(vars.error)
          )
          return;
        } else if(!args[2]) {
          message.channel.send(
            new Discord.RichEmbed()
            .setDescription(`Specify a valid word to add!`)
            .setColor(vars.error)
          )
        } else {
        client.configs.push(message.guild.id, args[2], "swearWords")
        message.channel.send(
          new Discord.RichEmbed()
          .setDescription(`Banned word \`${args[2]}\` added`)
          .setColor(vars.good)
        )
        }
      } else if(args[1] === "remove") {
        if(!client.configs.get(message.guild.id, args[2], "swearWords")) {
          message.channel.send(
            new Discord.RichEmbed()
            .setDescription(`Word \`${args[2]}\` is not a banned word here!`)
            .setColor(vars.error)
          )
          return;
        } else if(!args[2]) {
          message.channel.send(
            new Discord.RichEmbed()
            .setDescription(`Specify a valid word to remove!`)
            .setColor(vars.error)
          )
        } else {
        client.configs.remove(message.guild.id, args[2], "swearWords")
        message.channel.send(
          new Discord.RichEmbed()
          .setDescription(`Banned word \`${args[2]}\` removed`)
          .setColor(vars.error)
        )
        }
      } else {
        message.channel.send(
          new Discord.RichEmbed()
          .setDescription(`Invalid action! Use \`add\` or \`remove\` instead.`)
          .setColor(vars.error)
        )
      }
    }

对不起,所有代码都可以,但是必要 另外,没有错误控制台日志输出。 预期的结果是使c!setconf swearWords添加以else if(!args [2]事物进行回复,remove选项运行良好,但是添加失败。 谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

据我对您的问题的了解,您想确保添加单词时该值不是未定义的。从外观上,您正在检查在另一条语句之后args[2]是否为undefined!args[2]的情况,这似乎是在返回true。我建议将它们交换一下。

...
if(args[1] === "add") {
    //Check that args[2] isn't undefined first
    if(!args[2]) {
        message.channel.send(
            new Discord.RichEmbed()
                .setDescription(`Specify a valid word to add!`)
                .setColor(vars.error)
            )
    } else if(client.configs.get(message.guild.id, args[2], "swearWords")) {
        message.channel.send(
            new Discord.RichEmbed()
                .setDescription(`Word \`${args[2]}\` has been already added!`)
                .setColor(vars.error)
        )
        return;
    } else {
        client.configs.push(message.guild.id, args[2], "swearWords")
        message.channel.send(
          new Discord.RichEmbed()
              .setDescription(`Banned word \`${args[2]}\` added`)
              .setColor(vars.good)
        )
    }
}
...
相关问题