本文详解在 Discord.js 中追踪删除消息用户的方法。通过监听 messageDelete 事件,结合 fetchAuditLogs 获取执行删除操作的机器人或管理员信息,适用于有权限的服务器操作。对于普通用户删除自身消息的情况,审计日志可能无效,此时需直接从事件参数中获取消息作者。
Discord.js 追踪消息删除用户方法实例详解
在 Discord.js 框架下,开发者可以通过监听 "messageDelete" 事件来捕获并追踪删除消息的具体用户。以下提供两种不同场景下的实现示例。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('messageDelete', async (message) => {
// 获取删除消息的审计日志
const fetch = await message.guild.fetchAuditLogs({type: 'MESSAGE_DELETE'}).catch(() => {});
// 获取执行删除操作的用户
const deletionLog = fetch.entries.first();
const executor = deletionLog.executor;
console.log(`消息被 ${executor.tag} 删除.`);
});
client.login('你的token');该方案首先注册对 "messageDelete" 事件的监听。当服务器中发生消息删除行为时,此事件会被触发。随后,代码调用 "fetchAuditLogs" 方法拉取相关的审计日志,其中记录了执行特定管理操作的用户身份。本例中,重点获取执行 "MESSAGE_DELETE" 操作的用户信息。
需注意,上述依赖审计日志的方案前提是删除者拥有查看或触发审计日志记录的权限。若由普通用户自行删除其发送的消息,服务器审计日志可能不包含该记录,导致无法通过此方式获取信息。此时,应直接从 "messageDelete" 事件传入的消息对象中读取作者信息。
client.on('messageDelete', async (message) => {
console.log(`消息由 ${message.author.tag} 删除.`);
});在此场景下,代码直接从被删除的消息对象中提取作者字段。该方式适用于用户删除自己发送的消息的情况,无需依赖服务器审计日志。
以上介绍了在 Discord.js 中追踪消息删除用户的两种主要方法。如需了解更多关于 Discord.js 开发或消息追踪的详细内容,请参考本站其他相关技术文章。