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

时间:2019-06-10 02:05:53

标签: python discord discord.py

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

@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:中的成员不再起作用。谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

@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

答案 1 :(得分:0)

migration guide提到server已重命名为guild。正确的代码应为message.guild.members