如何使用discord bot过滤单词? (JavaScript的)

时间:2017-04-08 20:46:23

标签: javascript bots discord

我最近为我的discord服务器创建了一个机器人。现在我希望他过滤坏话。

例如:

用户(没有机器人):你是个混蛋

用户(有机器人):你是[我很愚蠢,因为我发誓]

这在Discord中甚至可能吗?我给了我的机器人所有权限! (包括删除消息,它不能用自编程序编辑消息)

如果那是不可能的话^我们可以做以下事情吗?

直接删除邮件并编写以下内容的能力:

Bot:@username不要发誓!

现在我有以下代码(我不知道是否有用):

if (o1.isEmpty ^ o2.isEmpty)
  List(o1,o2).flatMap(_.map(x=>Some(compute(x)))).head
else
  None

3 个答案:

答案 0 :(得分:1)

使用正则表达式来帮助您从您想要的黑名单字词中进行检测。

例如,如果要将单词asshol*列入黑名单,请使用正则表达式来检测单词:

if ((/asshole/gm).test(message.content)) 
  message.delete().then(() => {
    message.reply('Do not swear!'); // Sends: "@user1234 Do not swear!"
  });
}

如果您想将多个单词列入黑名单/过滤器,例如 fu*ksh*t

在正则表达式中使用分隔符:/(word1|word2|word3)/gm 所以...使用:

if ((/(fuck|shit)/gm).test(message.content)) {
    message.delete().then(() => {
      message.reply('Do not swear!');
    });
}

一切正常!

完整代码重写,

client.on('message', (message) => {
  if ((/asshole/gm).test(message.content)) {
    message.delete().then(() => {
      message.reply('Do not swear!'); // Sends: "@user1234 Do not swear!"
    });
  }
});

告诉我它是否有效

祝你好运,
绝地

答案 1 :(得分:0)

Docs。目前在Discord API中,没有可能的方法来编辑来自其他用户的消息。您可以完全删除该消息,也可以重新发送但已编辑。如果你想重新发送它,那么你可以使用:

let censor = "[Sorry, I Swear]"; /* Replace this with what you want */
client.on('message', message => {
    let edit = message.content.replace(/asshole/gi, censor);
    message.delete();
    message.channel.send(`${message.author.username}: ${edit}`);
}

输入>>>你好混蛋

输出<<< AkiraMiura:您好[抱歉,我发誓]

请注意,如果用户发送一个2000字节(Charater)长消息,您将无法发送固定版本,它将被删除。

答案 2 :(得分:-1)

尝试:

client.on('message', message => {
    message.edit(message.content.replace(/asshole/gi, "[I'm stupid because I swear]"))
       .then(msg => console.log(`Updated the content of a message from ${msg.author}`))
       .catch(console.error);
});
感谢@AndréDion从API中提出正确的方法