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

时间:2017-08-07 14:13:37

标签: javascript node.js discord

我正在尝试为Discord机器人创建一个发誓过滤器(使用Discordie库),并且我尝试了两个脚本(两个脚本都无法正常工作)<\ n / p>

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

脚本中没有任何咒骂词被阻止,因此脚本甚至不存在。

我也试过这个:

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();
        }
    }
});

这些都不起作用,所以我不确定现在要尝试什么。我应该提出任何建议/改变吗?

2 个答案:

答案 0 :(得分:1)

我不能说我熟悉不和谐的供应商,但两种方法的结合可能会有效。

首先,您要将数组与字符串进行比较,以便在一开始就给您带来问题。在第二个中,您使用循环遍历数组,但数组不是正确的。

此外,如果你有两个要比较的字符串,你不会想要检查它们是否完全相等,但字面意思是一个字符串在另一个字符串中。该函数有时作为Contains存在,但我相信javascript方法是indexOf。这有帮助,因为如果字符串不存在,函数应该返回-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();
    }
  }
}

答案 1 :(得分:0)

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

getUsers_v2

有关详情,请查看:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf