首页 > 解决方案 > 自动审核系统白名单 discord.js

问题描述

我正在尝试使用我的 discord.js 自动审核系统将一些单词列入白名单。下面是我在消息中自动审核的代码,效果很好。

const censorlist = require(`./censorlist.json`);
if(censorList.autoModTrigger.some(word => message.content.toLowerCase().includes(word))) {
    //code here
});

但我想将“你好”列入白名单,所以我这样尝试:

if (message.content.toLowerCase().includes("hello")) return;

但是例如使用此代码,如果您说“hello [blacklisted word]”,它不会审查它,所以我想解决这个问题。

标签: javascriptdiscord.js

解决方案


我认为您的问题有点过于基于意见,因为您似乎仍然处于开发的决策方面,而不是针对特定问题。

但既然我可能会误解它,我不妨给你一些东西。

您已经有一个似乎(或应该)有效的黑名单,其中:

const censorlist = require(`./censorlist.json`);
if(censorList.autoModTrigger.some(word => message.content.toLowerCase().includes(word))) {
  //code here
});

由于您将对白名单进行基本相同的操作,因此我们将把它移到一个函数中。

function doesIntersect(text, wordlist) {
  return wordlist.some(word => text.toLowerCase().includes(word))
}

所以你以前的代码看起来像这样:

const censorlist = require(`./censorlist.json`);
if (doesIntersect(message.content, censorList.autoModTrigger)) {
  // Code here
}

现在,如果您的消息包含列入白名单的字词,您想忽略黑名单,所以让我们这样做吧!

const censorlist = require(`./censorlist.json`);
if (!doesIntersect(message.content, censorList.whitelist)
  && doesIntersect(message.content, censorList.autoModTrigger)) {
  // Code here
}

在该代码中,我假设您的白名单单词列表位于whitelist“censorlist.json”文件根目录的属性中。

旁注:我本可以为每个交集结果创建一个布尔变量,但最好在 if 条件中执行此操作,以便惰性求值将忽略&&if 左侧为假的右侧。


推荐阅读