Comment suivre les utilisateurs qui ont supprimé des messages dans discord.js ?
P粉760675452
P粉760675452 2023-08-29 17:00:40
0
1
515

Je viens de commencer à apprendre à créer un robot Discord et j'essaie de comprendre comment enregistrer qui a supprimé un message.

J'ai essayé message.author, mais bien sûr, cela enregistre qui a envoyé le message, et je ne connais pas grand chose de la syntaxe, donc je n'ai rien essayé d'autre.

P粉760675452
P粉760675452

répondre à tous (1)
P粉709307865

Vous pouvez utiliser lemessageDeleteEventqui se déclenche lorsqu'un message est supprimé. Vous pouvez consulter le journal d'audit pour voir si un utilisateur a supprimé les messages d'autres utilisateurs.

Tout d'abord, assurez-vous d'avoir l'intention requise :GuildsGuildMembersGuildMessages。您还需要partialsChannelMessageGuildMemberpour gérer les messages envoyés avant la mise en ligne de votre bot.

Une fois qu'un message est supprimé, vous pouvez utiliser la méthodefetchAuditLogspour obtenir le journal d'audit du serveur sur lequel se trouvait le message supprimé.

const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessages, ], partials: [ Partials.Channel, Partials.GuildMember, Partials.Message, ], }); client.on('messageDelete', async (message) => { const logs = await message.guild.fetchAuditLogs({ type: AuditLogEvent.MessageDelete, limit: 1, }); // logs.entries is a collection, so grab the first one const firstEntry = logs.entries.first(); const { executorId, target, targetId } = firstEntry; // Ensure the executor is cached const user = await client.users.fetch(executorId); if (target) { // The message object is in the cache and you can provide a detailed log here console.log(`A message by ${target.tag} was deleted by ${user.tag}.`); } else { // The message object was not cached, but you can still retrieve some information console.log(`A message with id ${targetId} was deleted by ${user.tag}.`); } });

Dans discord.js v14.8+, il y a un nouvel événementGuildAuditLogEntryCreate。您可以在收到相应的审核日志事件(GuildAuditLogEntryCreate)时立即找出谁删除了消息。它需要启用GuildModerationIntent.

const { AuditLogEvent, Events } = require('discord.js'); client.on(Events.GuildAuditLogEntryCreate, async (auditLog) => { // Define your variables const { action, executorId, target, targetId } = auditLog; // Check only for deleted messages if (action !== AuditLogEvent.MessageDelete) return; // Ensure the executor is cached const user = await client.users.fetch(executorId); if (target) { // The message object is in the cache and you can provide a detailed log here console.log(`A message by ${target.tag} was deleted by ${user.tag}.`); } else { // The message object was not cached, but you can still retrieve some information console.log(`A message with id ${targetId} was deleted by ${user.tag}.`); } });
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!