discord.js - 从所有成员中删除特定角色

zzz*_*zzz 5 javascript discord discord.js

我正试图从许多人那里删除我公会中的一个角色。然而,在公会不是每个人都有这种作用,并有一个大的数字他们。

message.guild.members.cache.forEach(member => {
  member.roles.remove("12345678901234");
});
Run Code Online (Sandbox Code Playgroud)

此代码有效,但效率不高。上面的代码很慢。你有更好的代码吗?谢谢!

小智 7

我会删除角色,然后重新创建它。

const role = message.guild.roles.cache.get("RoleID");
message.guild.roles.create({
data: {
name: role.name,
color: role.color,
hoist: role.hoist,
position: role.position,
permissions: role.permissions,
mentionable: role.mentionable
}
})
role.delete('I had to.')
Run Code Online (Sandbox Code Playgroud)

它的工作速度非常快,比手动抓取每个成员并删除角色要快得多,尤其是对于大型服务器。


Jak*_*kye 5

const Role = message.guild.roles.cache.get("RoleID");
Role.members.forEach((member, i) => { // Looping through the members of Role.
    setTimeout(() => {
        member.roles.remove(Role); // Removing the Role.
    }, i * 1000);
});
Run Code Online (Sandbox Code Playgroud)

我认为由于 Discord 的 API 限制,您的代码速度很慢。您的代码没有延迟,这意味着您的代码将立即执行。

我提供的代码将每隔 1 秒从成员中删除一个角色。

如果您想立即删除该角色,则需要将其删除。它将被从每个人身上删除。

  • @MakeHellTal Discord 有一个[速率限制](https://discord.com/developers/docs/topics/rate-limits#header-format)。尝试绕过此限制将暂停请求,直到经过一定秒数。forEach 循环的运行速度超过了 Discord 的 API 限制,这将导致 Discord 暂停请求。 (3认同)