【问题标题】:Looping through members - discord.py循环访问成员 - discord.py
【发布时间】:2021-07-13 16:08:14
【问题描述】:

我正在尝试使用 discord.py 遍历服务器中的所有成员。这是我编写的一些测试代码:

@client.event
async def on_ready():
  print("bot is online!\nname: {}\nid: {}".format(client.user.name, client.user.id))
  server = client.get_guild(ID)
  print("connected to server!\nname: {}\nid: {}".format(server.name, server.id))
  members = server.members
  print("members we've found: " + str(len(members)))
  for member in members:
    print(member.name)

此代码有效,但是它仅在我正在测试的所有不同服务器上注册了大约 10-20 个成员。 有人对此有解决方案吗?还是解决方法? 谢谢!

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    你必须等到缓存加载完成

    @client.event
    async def on_ready():
        await client.wait_until_ready()
    
        server = client.get_guild(ID)
        print("members we've found: " + str(len(server.members)))
        for member in server.members:
            print(member.name)
    

    【讨论】:

    • 我试了一下。这是我更新的代码:``` @client.event async def on_ready(): await client.wait_until_ready() print("bot is online!\nname: {}\nid: {}".format(client.user.name , client.user.id)) server = client.get_guild(ID) print("已连接到服务器!\nname: {}\nid: {}".format(server.name, server.id)) members = server. members print("members we've found: " + str(len(members))) for member in members: print(member.name) ``` 虽然这增加了加载的成员数量,但并没有解决问题,因为它只在 14k+ 服务器中注册了 17 个成员
    【解决方案2】:

    也许它捕获了默认公会的成员。试试iterating over all guilds

    【讨论】:

    • 这不应该是这样,因为我是从它的 ID 中获取公会实例,并且打印出来的成员都在公会中。
    猜你喜欢
    • 2021-05-10
    • 2012-08-07
    • 1970-01-01
    • 2021-10-11
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2013-06-27
    相关资源
    最近更新 更多