Comment suivre les utilisateurs qui ont supprimé des messages dans discord.js ?
P粉760675452
P粉760675452 2023-08-29 17:00:40
0
1
600
<p>Je viens de commencer à apprendre à créer un robot Discord et j'essaie de comprendre comment enregistrer qui a supprimé un message. </p> <p>J'ai essayé <code>message.author</code>, 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>
P粉760675452
P粉760675452

répondre à tous(1)
P粉709307865

Vous pouvez utiliser le messageDeleteEvent qui 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éthode fetchAuditLogs pour 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énement GuildAuditLogEntryCreate。您可以在收到相应的审核日志事件(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!