【问题标题】:How to get all guilds where a member is in?如何获取会员所在的所有公会?
【发布时间】:2021-02-21 07:41:52
【问题描述】:

我知道如何从公会获取所有成员,但我需要执行相反的操作:获取指定成员注册的所有公会 (ID)。

当获取像 client.users.cache.get(memberID); 这样的用户时,我在结果中看不到任何可以让我看到所有成员公会的内容:

User {
  id: '706498754712807398',
   system: null,
   locale: null,
 flags: UserFlags { bitfield: 0 },
   username: 'johndoe',
   bot: false,
  discriminator: '1023',
   avatar: null,
   lastMessageID: null,
   lastMessageChannelID: null
 }

有什么建议吗?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    您可以使用以下代码来做到这一点:

    const userID = '3383083830389'; // the ID of the user
    const guilds = client.guilds.cache.filter((guild) => guild.members.cache.has(userID));
    

    guilds 是用户所在公会的Collection。这有两个限制:

    • 你也只能获得机器人所在的公会
    • 如果成员没有被缓存,这将不起作用(这可以通过尝试获取每个公会中的成员来解决)

    【讨论】:

      【解决方案2】:

      您无法查看您无权访问该帐户的用户所在的服务器。这是 Discord 的限制,属于隐私类别,无论如何您都不想这样做,因为它可能会被恶意使用。

      如果您以该帐户登录,您可以访问用户所在的公会的唯一方法,否则如果不登录该帐户,您将看不到他们所在的服务器类型。

      但是,如果您想检查您的机器人所在的服务器类型,代码非常简单。

      const allGuilds = (client.guilds.cache)
      console.log(allGuilds)
      

      我自己没有对此进行测试,但它应该会为您指明正确的方向。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-14
        • 1970-01-01
        • 2020-08-15
        • 2020-11-11
        • 1970-01-01
        • 2021-05-24
        • 2021-11-09
        • 2021-10-20
        相关资源
        最近更新 更多