如何检查消息内容是否包括数组中的任何项目?

Zer*_*des 2 javascript arrays discord

我正在制作一个不和谐的机器人,并试图使用数组制作一个禁止的单词列表。我似乎找不到如何使这项工作。这是我当前的代码:

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.`));
}
Run Code Online (Sandbox Code Playgroud)

如果您无法告知,我正在尝试检查用户的消息中是否包含数组中的任何内容forbidenWords并将其删除。我该怎么做呢?

qxz*_*qxz 6

您发布的代码检查整个消息的内容是否是您的数组的成员。要完成您想要的任务,请循环遍历数组并检查消息是否包含每个项目:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,您的变量名称中拼错了“forbi dd en”)


小智 6

在“现代” JS中:

forbiddenWords.some(word => message.content.includes(word))
Run Code Online (Sandbox Code Playgroud)

采用逐行注释的格式:

forbiddenWords               // In the list of forbidden words,
  .some(                     // are there some
    word =>                  // words where the 
      message.content        // message content
        .includes(           // includes
          word))             // the word?
Run Code Online (Sandbox Code Playgroud)