0

嗨,我一直在尝试为我的 Discord.js 机器人制作一个过滤器,您可以使用 .add (word) 进行过滤,它会开始过滤那个特定的单词,但是当我尝试它时,它只会做 1 个单词而不是多个单词

if(command === "filteradd"){
       if(message.member.hasPermission('MANAGE_MESSAGES'))

   if(!args[0]) {
       let color = message.member.displayHexColor;
       if(!color) color = "RANDOM";
       const sen = new Discord.MessageEmbed()
       .setTitle(`${message.author.tag}`)
       .setDescription(`Send a word to filter`)
       .setColor(color)
       return message.channel.send(sen)
     } 

   

     
     db.add(`badword_${message.guild.id}`, args[0])
     let color = message.member.displayHexColor;
     if(!color) color = "RANDOM";
     const set = new Discord.MessageEmbed()
     .setTitle("Succesfully added")
     .setColor(color)
   await message.channel.send(set)
     
   
   
}

接着

client.on("message", async message => {
  
    if(message.author.bot) return;
      if(!message.guild) return;
      let blacklisted = db.get(`badword_${message.guild.id}`)
            
         if (!message.member) message.member = message.guild.fetchMember(message);


    let foundInText = false;
    for (var i in blacklisted) {
      if (message.content.toLowerCase().includes(blacklisted[i].toLowerCase())) foundInText = true;
    }
    if (foundInText) {
      message.delete();
      message.channel.send(`yo this actually worked wtf`);
    }
    });

任何帮助,将不胜感激!enter code here

4

1 回答 1

-1

您仍在使用args[0]作为获取黑名单单词的方法,如果您想要多个参数,则不能这样做。

使用for循环,并遍历参数:

if (args[1]) { //checks for multiple arguments
   let badWordArr = args; //mirrors the args array 

   var i;
   for (i = 0; i < badWordArr.Length(); i++) {
      db.add(`badword_${message.guild.id}`, args[i]); //as the loop increments, the words are added
   }
};

//additional code here
于 2021-03-02T08:54:36.663 回答