Я делаю бот-дискорд и пытаюсь составить список запрещенных слов, используя массивы. Я не могу понять, как заставить это работать. Вот мой текущий код:
if (forbidenWords.includes(message.content)) {
message.delete();
console.log(colors.red(`Removed ${message.author.username}'s Message as it had a forbidden word in it.`));
}
Если вы не можете сказать, я пытаюсь проверить, есть ли в сообщении пользователя что-либо из массива forbidenWords
, и удалить его. Как мне это сделать?
4 ответа
Размещенный вами код проверяет, является ли весь контент сообщения членом вашего массива. Чтобы выполнить то, что вы хотите, переберите массив и проверьте, содержит ли сообщение каждый элемент:
for (var i = 0; i < forbidenWords.length; i++) {
if (message.content.includes(forbidenWords[i])) {
// message.content contains a forbidden word;
// delete message, log, etc.
break;
}
}
(Кстати, вы неправильно написали «forbi dd en» в имени вашей переменной)
В "современном" JS:
forbiddenWords.some(word => message.content.includes(word))
В комментариях построчно:
forbiddenWords // In the list of forbidden words,
.some( // are there some
word => // words where the
message.content // message content
.includes( // includes
word)) // the word?
Array.prototype.S = String.fromCharCode(2);
Array.prototype.in_array = function(e){
var r=new RegExp(this.S+e+this.S);
return (r.test(this.S+this.join(this.S)+this.S));
};
var arr = [ "xml", "html", "css", "js" ];
arr.in_array("js");
//如果 存在返回true , 不存在返回false
Вместо этого вы можете использовать метод indexOf ():
if (forbidenWords.indexOf(message.content) != -1){
message.delete();
console.log(colors.red(`Removed ${message.author.username}'s Message as it had a forbidden word in it.`));
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.