javascript 用于查找消息中特定文本的消息收集器的过滤器,content,discord.js

6tqwzwtp  于 2022-12-02  发布在  Java
关注(0)|答案(2)|浏览(116)

我有一个消息收集器的过滤器和数组。

const answers = ["Rock", "Paper", "Scissors"];   
const filter = msg => answers.includes(msg.content());

该过滤器只检测与数组中的内容完全匹配的内容。因此,如果一条消息说“剪刀!!",它不会被检测到,因为有额外的文本(!!)。设计是它仍然应该被检测到。
我应该在过滤器中使用for循环,这对吗?我该怎么做呢?提前感谢。

dwbf0jvd

dwbf0jvd1#

这很简单。你可以使用.some()函数,如果回调函数中传递的条件与任何值匹配,它将返回true,否则将返回false。例如:

const string = "test!!";
const answers = ["Rock", "Paper", "Scissors"];

console.log(answers.some((val) => string.includes(val.toLowerCase())));
q8l4jmvw

q8l4jmvw2#

如果你想在filter中使用for循环,你可以尝试这样做:

const answers = ["Rock", "Paper", "Scissors"];
const filter = msg => {
  for (let answer of answers) {
    if (msg.content.includes(answer)) {
      return true;
    }
  }
  return false;
}

这将检查消息内容中是否包含任何答案,而不是检查是否完全匹配。您也可以使用Array.some()方法来简化代码:

const answers = ["Rock", "Paper", "Scissors"];
const filter = msg => answers.some(answer => msg.content.includes(answer));

相关问题