javascript - 自动审核系统白名单 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]”,它不会审查它,所以我想解决这个问题。
解决方案
我认为您的问题有点过于基于意见,因为您似乎仍然处于开发的决策方面,而不是针对特定问题。
但既然我可能会误解它,我不妨给你一些东西。
您已经有一个似乎(或应该)有效的黑名单,其中:
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 左侧为假的右侧。
推荐阅读
- java - 以编程方式关闭设置
- r - 安装 Rsymphony R 包的问题
- haproxy - 如何在 haproxy 中调整 SSL 连接超时?
- r - ggplot2 多变量散点图,更改标签和边距视图
- sql - 如何在 WHERE 中使用 AS 后面的关键字
- angular - ANGULAR:POST 请求返回 null
- node.js - 为什么 Chrome 会删除 localhost:80 的端口号?
- javascript - Javascript如何优化这个计数数组值函数
- apache-kafka - Kafka KSQL能否用于大型物联网场景中的实时流聚合
- user-interface - 如何正确处理 Nativescript/Angular 中的嵌套滚动视图