【发布时间】: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