【问题标题】:discord.js removing roles of member who deletes more than one channel recentlydiscord.js 删除最近删除多个频道的成员的角色
【发布时间】:2021-10-08 06:05:29
【问题描述】:

我是机器人编码的新手,所以我想在这方面获得一些帮助,

所以,我希望我的机器人删除打算在 2 分钟间隔内删除超过 1 个频道的成员的所有权限。我在下面做了这样的事情;

       client.on("channelDelete", async function(channel) {

    const channelDeleteId = channel.id;

    // finding all channel deletions in the log
    channel.guild.fetchAuditLogs({
            'type': 'CHANNEL_DELETE'
        })
        // finding the log entry for this specific channel
        .then(logs => logs.entries.find(entry => entry.target.id === channelDeleteId))
        .then(entry => {
            // getting the author of the deletion
            author = entry.executor;

            if (author.id === "472911936951156740") return console.log("VoiceMaster Bot has deleted a channel."); // dont mind, it's ok

            console.log(`channel ${channel.name} deleted by ${author}`);

            let member = channel.guild.members.cache.find(m => m.id === author.id);
            let deletedRecently = new Set;


            if (deletedRecently.has(member)) {

                member.roles.set([]);
                //member.ban();

            } else {
                deletedRecently.add(member);
                setTimeout(() => {

                    deletedRecently.delete(member);

                }, 120000);
            }
        })
        .catch(error => console.error(error));
});

当我测试它时,它有时会循环 3-4 次并触发角色删除行。

【问题讨论】:

  • 那么究竟是什么不起作用?您编写的代码有什么问题?您期望它如何工作以及它是如何工作的?
  • 我希望我的机器人删除打算在 2 分钟间隔内删除超过 1 个频道的成员的所有权限。其目的是阻止入侵者和恶意行为制造者。所以当我删除一个频道时,有时这个 channelDelete 事件会触发不止一次,并在 deletedchannelcount 2 之前填充我的 deletedRecently 条件我希望这样做 [入侵者删除一个频道] 机器人将他的 ID 记入内存(否则阻止)[入侵者删除另一个频道在 2 分钟内] 机器人扮演所有角色(如果被阻止)

标签: javascript discord.js


【解决方案1】:

问题已解决,谢谢。都是因为我的小错误。打扰了……

【讨论】:

  • 发布解决方案很有帮助,以防有人遇到同样的问题。
猜你喜欢
  • 2021-11-03
  • 2021-07-31
  • 2020-08-24
  • 1970-01-01
  • 2020-11-03
  • 2021-06-07
  • 2019-09-05
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多