首页 > 解决方案 > 忽略机器人删除的消息

问题描述

所以我正在处理已删除的消息日志。我让它工作,但被机器人删除的消息也被记录下来。而不是1次。我收到了 5 条相同的已删除消息。我已经尝试过类似的东西,if(!messageDelete.author.bot) {}但在尝试后仍然会记录机器人删除的消息,并且仍然会创建 10 条。这是我目前正在使用的代码:

bot.on("messageDelete", (messageDelete) => {
  if(!messageDelete.author.bot) {
    let DeleteEmbed = new Discord.RichEmbed()
    .setTitle("**DELETED MESSAGE OWO**")
    .setColor("#ed0c75")
    .addField("Author", messageDelete.author.tag, true)
    .addField("Channel", messageDelete.channel, true)
    .addField("Message", messageDelete.content)
    .setFooter(`Message ID: ${messageDelete.id} | Author ID: ${messageDelete.author.id}`, messageDelete.author.displayAvatar);

    let DeleteChannel = messageDelete.guild.channels.find(x => x.name === "mod-logs");
    DeleteChannel.send(DeleteEmbed);
}})

这是输出的屏幕截图。例如,如果我使用purge命令,它会记录所有已删除的消息。

截屏

我希望有人可以帮助我。

标签: javascriptdiscord.js

解决方案


为此,您需要audit logs在 Discord 中查看,审计日志同时显示执行者和受害者(我不知道该怎么称呼它)。

要查看您使用的已删除邮件审核日志:

let logs = await messageDelete.guild.fetchAuditLogs({
        type: 72
    });

然后来看看最新的:

let entry = logs.entries.first();

然后检查机器人是否删除了一条消息以及做什么(如果没有):

if (entry.executor.username === bot.user.username) {
        return;
    } else {
        let DeleteEmbed = new Discord.RichEmbed()
    .setTitle("**DELETED MESSAGE OWO**")
    .setColor("#ed0c75")
    .addField("Author", messageDelete.author.tag, true)
    .addField("Channel", messageDelete.channel, true)
    .addField("Message", messageDelete.content)
    .setFooter(`Message ID: ${messageDelete.id} | Author ID: ${messageDelete.author.id}`, messageDelete.author.displayAvatar);

    let DeleteChannel = messageDelete.guild.channels.find(x => x.name === "mod-logs");
    DeleteChannel.send(DeleteEmbed);
    };

所有这些代码看起来像这样:

let logs = await messageDelete.guild.fetchAuditLogs({
        type: 72
    });
let entry = logs.entries.first();
if (entry.executor.username === bot.user.username) {
        return;
    } else {
        let DeleteEmbed = new Discord.RichEmbed()
    .setTitle("**DELETED MESSAGE OWO**")
    .setColor("#ed0c75")
    .addField("Author", messageDelete.author.tag, true)
    .addField("Channel", messageDelete.channel, true)
    .addField("Message", messageDelete.content)
    .setFooter(`Message ID: ${messageDelete.id} | Author ID: ${messageDelete.author.id}`, messageDelete.author.displayAvatar);

    let DeleteChannel = messageDelete.guild.channels.find(x => x.name === "mod-logs");
    DeleteChannel.send(DeleteEmbed);
    };

我希望这有助于回答你的问题!

PS - 不错的机器人名称。


推荐阅读