[英]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.