Как получить список всех участников на сервере Discord, используя новую версию discord.py? - PullRequest
0 голосов
/ 10 июня 2019

Я недавно обновил свой 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)

это часть кода, которая не работает, я не знаю, каков новый способ перебрать все члены сервера, поскольку для member в message.server.members: больше не работает. Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Ниже фрагмента будет возвращаться генератор с каждым «участником» клиента, т.е. ваш бот может видеть все серверы, членом которых он является.

@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
0 голосов
/ 10 июня 2019

В руководстве по миграции упоминается, что server было переименовано в guild. Правильный код должен быть message.guild.members.

...