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