【问题标题】:discord.js - remove a specific role from all membersdiscord.js - 从所有成员中删除特定角色
【发布时间】:2020-11-03 18:37:33
【问题描述】:

我正在尝试从许多人中删除我的公会中的角色。然而,并非公会中的每个人都有这个角色,而且他们的数量大量

message.guild.members.cache.forEach(member => {
  member.roles.remove("12345678901234");
});

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

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案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 暂停请求。
      猜你喜欢
      • 2021-11-03
      • 2021-11-17
      • 2021-02-14
      • 2021-01-07
      • 2020-10-20
      • 2021-08-12
      • 1970-01-01
      • 2020-12-27
      • 2018-11-29
      相关资源
      最近更新 更多