如何让你的不和谐机器人在删除它后记录一条消息?

时间:2021-01-06 00:12:26

标签: javascript discord.js

我试图让我的 Discord 机器人识别我不想让人们使用的词。我知道如何让机器人删除包含该词的消息并适当地回复此人。我想不通的是如何让机器人记录包含该词的消息并将其发送到审核日志通道作为嵌入记录它刚刚删除的消息以及发送者。

我看过有关如何记录每条已删除邮件的示例,但这不是我想要做的。我只希望机器人在人们使用这个词时记录它删除的消息。 (或在主频道删除之前先记录该词的消息)

这是我目前使用的代码,不知道如何添加该部分。

client.on('message', message => {
    const args = message.content.split(" ").slice(1);
    if(message.content.toLowerCase() === "word") {
        message.delete()
        message.reply("don't send that word here.");
    }
  });

1 个答案:

答案 0 :(得分:1)

if(message.content.toLowerCase().includes("word")) {
       let badMsg = message.content;
       let badMsgChan = message.guild.channels.cache.get(message.channel.id);
       let badMsgUser = message.author;
       let logChan = message.guild.channels.cache.find(ch => ch.name === "logs");

       let emb = new Discord.MessageEmbed()
          .setTitle("Blacklisted word used")
          .addField("Content", badMsg, true)
          .addField("Found in", badMsgChan, true)
          .addField("Written by", badMsgUser, true)
          .setTimestamp()

       logChan.send(emb);

       message.delete();
       message.reply("don't send that word here.");
}

我建议使用 .includes() 而不是 ===,因为 === 意味着它必须是那个值(单词)。 .includes() 检查消息内容中是否包含值(单词)。

所以我创建了一些变量来存储有关“坏”消息的信息。 badMsg 正在存储消息内容(句子或包含在其中的任何单词)。 badMsgChan 存储频道,在其中发现“坏”消息。badMsgUser 存储发送“坏”消息的用户。 logChan 是您要发送嵌入的频道。您可以完全按照自己的风格更改所有内容,我只是想举例说明如何解决您的问题。所以嵌入有 3 个字段:

  • Content -> “坏”消息内容。
  • Found in -> 发现“坏”消息的频道。
  • Written by -> 发送消息的用户。