discord.js - 从所有成员中删除特定角色
Posted
技术标签:
【中文标题】discord.js - 从所有成员中删除特定角色【英文标题】:discord.js - remove a specific role from all members 【发布时间】:2020-11-03 18:37:33 【问题描述】:我正在尝试从许多人中删除我的公会中的角色。然而,并非公会中的每个人都有这个角色,而且他们的数量大量。
message.guild.members.cache.forEach(member =>
member.roles.remove("12345678901234");
);
此代码有效,但效率不高。上面的代码很慢。你有更好的代码吗?谢谢!
【问题讨论】:
【参考方案1】:我会删除该角色,然后重新创建它。
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.')
它的工作速度非常快,比手动抓取每个成员并删除角色要快得多,尤其是对于大型服务器。
【讨论】:
【参考方案2】: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);
);
我认为由于 Discord 的 API 限制,您的代码很慢。您的代码没有延迟,这意味着您的代码将立即执行。
我提供的代码将每 1 秒从一个成员中删除一个角色。
如果要立即删除角色,则需要将其删除。它将从所有人中删除。
【讨论】:
你可以从他的问题看出这不是他的意思。他正在一个巨大的公会中循环,所以它需要永远是可以理解的。而你实际上只是让它慢得多。 @MakeHellTal Discord 有一个rate limit。试图绕过此限制将暂停请求,直到经过一定的秒数。 forEach 循环的运行速度超过了 Discord 的 API 限制,这将导致 Discord 暂停请求。以上是关于discord.js - 从所有成员中删除特定角色的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js V12 如何显示具有特定角色的所有成员?