javascript - 忽略机器人删除的消息
问题描述
所以我正在处理已删除的消息日志。我让它工作,但被机器人删除的消息也被记录下来。而不是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命令,它会记录所有已删除的消息。
我希望有人可以帮助我。
解决方案
为此,您需要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 - 不错的机器人名称。
推荐阅读
- ios - 如何设置 UICollectionViewCompositionalLayout 标头的样式以与其子列表 .insetGrouped 布局分开?
- google-chrome-extension - chrome 扩展 V3 executeScript 抛出错误
- git - 'ssh -T git@github.com' 表示我已通过正确用户的身份验证,但运行 git 命令表示权限被拒绝(公钥)
- javascript - mouseEnter 和 mouseLeave 适用于 HTML 元素,但不适用于 React 组件?
- javascript - 如何将 CSS 类添加到 javascript 画布元素(例如 fillRect() )
- c# - 减少执行时间 c# 算法
- python - 同时在 2 个子图上绘制曲线
- go - 退出多个在无缓冲通道上等待的 goroutine
- azure - Azure Functions 在与 Azure Cosmos DB 或 SQL 数据库结合的负载测试中失败
- biztalk - BizTalk Orchestration 中如何动态设置 SFTP 发送端口的连接限制?