如何从我的不和谐 py 服务器中获取所有成员

时间:2021-06-15 02:02:16

标签: python python-3.x python-2.7 discord discord.py

我想获取我服务器的所有成员,但是当我搜索它时,我发现这个代码片段可以做到这一点:

for guild in client.guilds:                      
 for member in guild.members:                     
  print(member)

好吧,这段代码应该显示所有成员,问题是它只显示我的机器人用户。但是当我这样说时:

@tasks.loop(seconds=10)
async def counter():                                                                           
for guild in client.guilds:                      
 for member in guild.members:                     
  print(guild.members)

它显示此对象 [ ] 内的信息,我不会完全显示它,因为在此对象内它包含有关我的帐户和不和谐服务器的信息,所以我如何更改此代码以便它显示我的号码会员名还是会员名?

3 个答案:

答案 0 :(得分:2)

正如我在问题中指出的那样,成员计数如何在对象 [] 内,我访问了这个对象的属性,然后我设法获取了所有成员,这是代码:

for guild in client.guilds:
 print(guild.member_count)

答案 1 :(得分:0)

打印 guild.member 返回一个 discord.Member 对象,其中包含大量信息。以下是您希望选择的方式:

获取成员数量:

for guild in client.guilds:
    print(len(guild.members))

获取成员名称:

for guild in client.guilds:
    for member in guild.members:
        print(member.name)

另外,我建议减少循环时间以避免速率受限。

答案 2 :(得分:0)

你的方法是正确的:

for guild in client.guilds:
    print(guild.member_count)

但正如您在文档中看到的 here

<块引用>

由于 Discord 的限制,为了使该属性保持最新和准确,它需要指定 Intents.members。

因此,您必须在代码中启用成员意图并在 developer portal

intents = discord.Intents.default()
intents.members = True

#or 
intents = discord.Intents.all()

client = commands.Bot(command_prefix='!', intents=intents)

成员意图用于以下用途:link

这对应于以下事件:

<块引用>
  • on_member_join()

  • on_member_remove()

  • on_member_update()(昵称、角色)

  • on_user_update()

这也对应了以下的属性和类 缓存:

  • Client.get_all_members()

  • Guild.chunk()

  • Guild.fetch_members()

  • Guild.get_member()

  • 公会成员

  • 成员角色

  • 会员尼克

  • Member.premium_since

  • 用户名

  • User.avatar(User.avatar_url 和 User.avatar_url_as())

  • User.discriminator