每当字符串在对象中时,如何执行某些操作?

How can I execute something whenever a string is in an object?

我正在尝试为 Discord 机器人创建脏话过滤器(使用 Discordie 库),并且我尝试了两个脚本(均无法正常工作)

var swear = ["swear1", "swear2"]
bot.Dispatcher.on(Event.MESSAGE_CREATE, e => {
    if (e.message.content == swear) {
        e.message.delete();
    }

None的骂人话都被剧本屏蔽了,就好像剧本不存在一样

我也试过这个:

var swear = ["swear1", "swear2"]
bot.Dispatcher.on(Event.MESSAGE_CREATE, e => {
    var found = false;
    for(var i = 0; i < vendors.length; i++) {
        if (vendors[i].e.message.content == swear) {
            found = true;
            e.message.delete();
        }
    }
});

这些都不起作用,所以我不确定现在该尝试什么。我应该做 suggestions/changes 吗?

我不能说我熟悉使用 discordie 的供应商,但将您的两种方法结合起来可能会奏效。

首先,您将数组与字符串进行比较,因此一开始可能会给您带来问题。第二种,你用循环遍历一个数组,但是数组不对

此外,如果您确实有两个字符串要比较,您不一定要检查它们是否完全相等,但实际上是一个字符串在另一个字符串中。该函数有时作为 Contains 存在,但我相信 javascript 方法是 indexOf。这很有帮助,因为如果字符串不存在,函数应该 return -1。

考虑:

var swear = ["swear1", "swear2"]
bot.Dispatcher.on(Event.MESSAGE_CREATE, e => {
  for(var i = 0; i < swear.length; i++){
    if (e.message.content.indexOf(swear[i]) !== -1) {
      e.message.delete();
    }
  }
}

无法正常工作,因为您正在将字符串与数组进行比较。您应该检查该字符串是否作为数组中的元素存在。为此,您可以使用:

arrayVar.indexOf(message.content)

更多信息请查看:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf