discord.js bot正在删除所有消息

时间:2017-11-15 19:45:25

标签: javascript discord discord.js

我在我的机器人中运行以下代码,作为删除cuss单词的命令。但是,它似乎会让机器人删除任何无论发送的消息!帮助!

bot.on('message', message => {
    if (message.content.includes == 'bannedWord1' ||'bannedWord2' || 'bannedWord3' || 'bannedWord4') {
       message.delete(1);
       message.channel.send("That word's not appropriate!");
    }
 });

3 个答案:

答案 0 :(得分:3)

问题是message.content.includes == 'bannedWord1' ||'bannedWord2' || 'bannedWord3' || 'bannedWord4'确实意味着(message.content.includes == 'bannedWord1') ||'bannedWord2' || 'bannedWord3' || 'bannedWord4'。非空字符串是真实的,所以这总是正确的。

另外,我认为message.content是一个字符串。所以你需要处理像“假设”这样的事情。其中包含ass但不是一个坏词。

演示解决方案:



var badWords = [
  'bannedWord1',
  'bannedWord2',
  'bannedWord3',
  'bannedWord4'
];

var contents = [
  'This is a test.',
  'bannedWord1 tester.',
  'bannedWord2!',
  'OkaywordthatcontainsbannedWord1.'
];

var allowed = contents.filter(content => {
  var words = content.toLowerCase().trim().match(/\w+|\s+|[^\s\w]+/g);
  return !words.find(word => {
    return badWords.includes(word);
  });
});

console.log(allowed);




在您的情况下使用:

var badWords = [
  'bannedWord1',
  'bannedWord2',
  'bannedWord3',
  'bannedWord4'
];

bot.on('message', message => {
  var words = message.content.toLowerCase().trim().match(/\w+|\s+|[^\s\w]+/g);
  var containsBadWord = words.some(word => {
    return badWords.includes(word);
  });
  if (containsBadWord) {
    message.delete(1);
    message.channel.send("That word's not appropriate!");
  }
});

来自regex101.com的正则表达式解释

  1. 第一替代\w+
    • \w+匹配任何字词(等于[a-zA-Z0-9_]
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  2. 第二个替代\S+
    • \S+匹配任何空格字符(等于[\r\n\t\f\v ]
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  3. 第三个替代[^\s\w]+
    • 匹配[^\s\w]+
    • 下方列表中不存在的单个字符
    • +量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)\ s匹配任何空格字符(等于[\r\n\t\f\v]

答案 1 :(得分:1)

因为你试图将指针与函数与表达式进行比较 string OR string OR string 总是如此,所以为每条新消息执行if

答案 2 :(得分:0)

这就是我所拥有的..随便看看吧!

extension CMTime: Strideable {
    public func distance(to other: CMTime) -> TimeInterval {
        return TimeInterval((Double(other.value) / Double(other.timescale)) - (Double(self.value) /  Double(self.timescale)))
    }

    public func advanced(by n: TimeInterval) -> CMTime {
        var retval = self
        retval.value += CMTimeValue(n * TimeInterval(self.timescale))
        return retval
    }
}