如何使用新的 discord.py 版本获取 discord 服务器中所有成员的列表?

新手上路,请多包涵

我最近更新了我的 discord.py,我的一些旧命令似乎是错误的。我需要遍历 discord 服务器的所有成员,但我以前的方法不再适用了。这是我的旧代码。

 @bot.command(pass_context = True)
async def missing(ctx, channel : str = None, useDiscordID : bool = False):
    memberlist = []
    for member in message.server.members:
        toAppend = ''
        if "barcode" in [y.name.lower() for y in member.roles]:
            if member.nick is None:
                toAppend = member.name
           else:
                toAppend = member.nick
            if useDiscordID:
                toAppend = f'{str(member)} : {toAppend}'
            memberlist.append(toAppend)

这是不起作用的代码部分,我不知道遍历服务器所有成员的新方法是什么,因为 message.server.members 中的成员:不再起作用。谢谢你的帮助!

原文由 Taerpe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 650
2 个回答

下面的代码片段将返回一个生成器,其中包含客户端的每个“成员”,即您的机器人可以在机器人所属的所有服务器上看到。

 @client.event
async def on_message(message):
    if message.content.startswith('!member'):
        for guild in client.guilds:
            for member in guild.members:
                print(member) # or do whatever you wish with the member detail

原文由 Ronnie 发布,翻译遵循 CC BY-SA 4.0 许可协议

迁移指南 提到 server 已重命名为 guild 。正确的代码应该是 message.guild.members

原文由 Minn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题