簡體   English   中英

在 discord.js 中獲取審計日志在嘗試獲取刪除消息的人時出錯

[英]fetching audit logs in discord.js getting some error on trying to get the person who deleted message

我正在嘗試制作一個代碼,讓我記錄誰刪除了消息,但有時它會給我真正刪除的人以外的人,這可能是因為互聯網問題,或者我試圖獲取的此代碼有問題它來自審計日志

client.on('messageDelete', async msg => {
  let logs = await msg.guild.fetchAuditLogs({type: "MESSAGE_DELETED"});
  let entry = logs.entries.first();
  let messageDeletedEmbed = new Discord.RichEmbed()
        .setAuthor(`${msg.author.tag}`, msg.author.avatarURL)
        .setThumbnail(msg.author.avatarURL)
        .setColor("#e8de17")
        .setTitle('A message has been deleted 🧹')
        .addField("**Message Sent By :**", "<@" + msg.author.id + ">")
        .addField("**Message Channel :**", msg.channel) 
        .addField("**Message Content :**", msg.content)  
        .addField("**Deleted By :**", '<@' + `${entry.executor.id}` + '>') 
        .setTimestamp()
        .setFooter(`${msg.guild.name}`,msg.guild.iconURL);
        let LoggingChannel = msg.guild.channels.find(ch => ch.name === "logs")
        if(!LoggingChannel) return;
        if (msg.author == client.user) return;
        LoggingChannel.send(messageDeletedEmbed); 
});

同樣的事情發生在我身上,我唯一能想到的就是檢查審計日志的創建時間,所以如果日志是在說......最后3秒內創建的,那么它很可能是你的日志想要,所以你說那個日志的executor刪除了它。 但如果不是,那么它找到的審計日志就不太可能是正確的,因此您可以相當肯定地說刪除它的人是message.author

`function deleteCheck() {
  if (entry.createdTimestamp > Date.now() - 2000) {
    return user;
  }

  else if (!entry.createdTimestamp > Date.now() - 1500) {
    return message.author.username;
  }

  else {
    return message.author.username;
  }
}`

這可能有點低效,但我基本上已經發送了函數的返回值。 entry 定義為: const entry = await message.guild.fetchAuditLogs({ type: 'MESSAGE_DELETE' }).then(audit => audit.entries.first())和 user 是: let user = entry.executor.username
我希望這對您有所幫助,可能需要進行一些試驗,但我認為您會沒事的 :)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM