问题描述
嗨,我一直在尝试为我的 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