如何获取成员所在的所有公会?

时间:2021-02-20 22:12:31

标签: discord discord.js

我知道如何从公会中获取所有成员,但我需要执行相反的操作:获取指定成员注册的所有公会 (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
 }

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码执行此操作:

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

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

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

答案 1 :(得分:0)

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

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

但是如果你想检查你的机器人在什么样的服务器上,代码很简单。

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

我自己没有测试过,但它应该为您指明正确的方向。