【问题标题】:guildMemberRemove and guildBanAdd are working like same events discord.js v13guildMemberRemove 和 guildBanAdd 像相同的事件 discord.js v13 一样工作
【发布时间】:2022-10-01 01:25:23
【问题描述】:

我想为我的服务器制作一个日志系统。禁止/踢日志。 它正在工作,但有一个错误,当我踢成员时,它会发送 1 条消息;但是当我禁止一个成员时,它会发送 2 条不同的消息。

当我踢成员时:

当我禁止会员时:

我写了一些代码:

const { AuditLogEvent } = require(\'discord.js\');

// ban detector

client.on(\'guildBanAdd\', async (ban) => {
  const fetchedLogs = await ban.guild.fetchAuditLogs({
    limit: 1,
    type: \'MEMBER_BAN_ADD\',
  });
  const banLog = fetchedLogs.entries.first();

  if (!banLog) return;
  const { executor, target } = banLog;

  if (target.id === ban.user.id) {
    const channel = client.channels.cache.get(\"954475961234116719\");
    channel.send(`<@${ban.user.id}> was Banned by <@${executor.id}>`)
  } else {
    return;
  }
});

还有一个:

// kick detector

client.on(\'guildMemberRemove\', async (member) => {

    const fetchedLogs = await member.guild.fetchAuditLogs({
        limit: 1,
        type: \'MEMBER_KICK\',
    });

  const kickLog = fetchedLogs.entries.first();
  if (!kickLog) return; 
  const { executor, target } = kickLog;
  if (target.id === ban.user.id) {
    const channel = client.channels.cache.get(\"954475961234116719\");
    channel.send(`<@${member.user.id}> was kicked by <@${executor.id}>`)
  } else return;

});

注意:我使用的是 Node.js v16+ 和 discord.js v13

    标签: javascript node.js discord discord.js


    【解决方案1】:

    不应该那样做,MEMBER_KICKMEMBER_BAN_ADD 是不同的。请注意,不能保证立即生成审核日志

    如果您仍在使用此代码,那么我会看到 1 个错误。你在禁令和踢球事件中检查ban.user.id

    【讨论】:

      猜你喜欢
      • 2021-10-11
      • 2022-08-19
      • 1970-01-01
      • 2023-01-12
      • 2013-08-09
      • 2021-11-09
      • 2013-02-24
      • 2021-12-25
      • 2014-06-13
      相关资源
      最近更新 更多