延迟"为每个"方法

HzM*_*eth 0 javascript discord.js

我正在尝试删除服务器管理员的服务器频道.当服务器所有者想要重置不和谐时,他可以使用该命令.然而它是快速的所以我需要在删除每个频道之前添加一个延迟导致Discord员工可以认为它的突袭.这是我的代码;

if (message.member.id == "<Server Owner ID>") {
    message.guild.channels.forEach(channel => {
        setTimeout(function(){channel.delete()}, 3000);
    });
}

else {
    message.channel.send("You don't have permission to execute this command.").then(msg => {
        msg.delete("5000")
    })
}}
Run Code Online (Sandbox Code Playgroud)

我怎么处理这个?

Cer*_*nce 6

forEach回调中使用另一个参数来指示正在迭代的当前项的索引,并将超时设置为该索引的某个乘数.这样,例如,第一次超时将在3秒后触发,第二次超时将在6秒后触发,等等.

message.guild.channels.forEach((channel, i) => {
  setTimeout(() => channel.delete(), (i + 1) * 3000);
});
Run Code Online (Sandbox Code Playgroud)