【问题标题】:Show whether who disconnected a user from voice channel显示谁断开了用户与语音通道的连接
【发布时间】:2021-03-18 01:17:51
【问题描述】:

所以基本上我现在有一个问题。我做了一个日志来显示在语音通道之间加入/离开/移动的人,现在我想扩展它的功能。所以我决定显示是否有人断开用户与频道的连接。但是我在获取审计日志时遇到了问题。如果我曾经断开某人的连接,之后有人自行离开,它仍然显示我断开了用户的连接。所以我在想是否可以通过获取审计日志的特定时间来解决这个问题,但我不知道该怎么做。这是显示断开连接和离开部分的代码的一部分。

 else if (newUserChannel === null) {

        // User leaves a voice channel

        const fetchedLogs = await (oldMember, newMember).guild.fetchAuditLogs({
            limit: 1,
            type: 'MEMBER_DISCONNECT',
        });

        const disconnectLog = fetchedLogs.entries.first();
        // console.log(disconnectLog)
        const { executor } = disconnectLog;

        const Disconnected = new Discord.MessageEmbed()
            .setColor('#555555')
            .setAuthor(`${executor.username}#${executor.discriminator}`, executor.displayAvatarURL())
            .setDescription(`<@${executor.id}> **has disconnected user** <@${oldMember.id}>`)
            .setTimestamp()
            .setFooter(F1, F2)

        const VCLeave = new Discord.MessageEmbed()
            .setColor('#55FFFF')
            .setAuthor(`${oldMember.member.user.tag}`, oldMember.member.user.displayAvatarURL({ dynamic: true }))
            .setDescription(`<@${oldMember.id}> **has left voice channel \`${oldUserChannel.name}\`**`)
            .setTimestamp()
            .setFooter(F1, F2)

        LogsChannel.send(Disconnected);
        LogsChannel.send(VCLeave);

    }

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    在我看来,比较条目的时间是解决此问题的好主意。

    disconnectLog 有一个名为createdAt(日期)和createdTimestamp(数字)的属性。

    这是您获取条目时间并将其与当前日期进行比较的方式。


    const Diff = Math.abs((new Date().getTime() - disconnectLog.createdAt.getTime()) / 1000);
    
    if (Diff <= 5) {console.log("The entry was created less than 5 seconds ago, so the user was disconnected by an admin.")};
    

    【讨论】:

    • 好吧,我已经做了 disconnectLog.createdTimestamp 与运行该部分代码时的当前时间戳进行比较。但是,如果在审计日志上,没有更多的东西更新,所以只有一个用户断开了成员的连接,并且它将无法比较,因为它记录了 XXX#0000 断开连接(例如:3)的成员,而不是每次都创建新日志当有人断开用户与语音通道的连接时。你有什么线索可以解决吗?
    • 我已经更新了我的代码。我正在以秒为单位比较两个日期之间的时间。如果自上次进入后超过 5 秒,则用户离开频道,否则,管理员将断开他们的连接。 (5 是我自带的一个数字,你可以增加或减少它,取决于 Discord API 的速度)
    • 好吧,我认为使用审核日志并比较事件时间是有效的,但不幸的是它不是。由于不和谐审核日志将成员断开连接事件记录为计数。就像我断开了 2 个用户与语音通道的连接一样。它显示(我的标签)断开了 2 个成员,而不是创建新日志。你有这方面的线索吗?
    • 我认为我们应该将此对话转移到chat
    猜你喜欢
    • 2021-07-01
    • 2021-09-18
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 2021-04-13
    • 2021-04-10
    • 2020-10-19
    • 2021-08-26
    相关资源
    最近更新 更多