Discord.js Quick.db 过滤器

问题描述

嗨,我一直在尝试为我的 discord.js bot 制作一个过滤器,你可以做 .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

解决方法

您仍然使用 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