Discord.py не выводит список пользователей

@bot.command( pass_context = True )
@commands.has_permissions(administrator = True)
async def upload(ctx):
    for guild in bot.guilds:
        for member in guild.members:
            print(f'{member.name} - {member.id}')

Выводит только имя и id бота


Ответы (1 шт):

Автор решения: sepera_okeq

Используйте discord.client.get_all_members(), чтобы вывести весь список пользователей.

Оно равносильно этому:

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

Подробнее - [Discord.py] - get_all_members()

UPDATE: Discord ввел Intents. Это радикальное изменение в том, как пишутся боты. Намерение в основном позволяет боту подписаться на определенные сегменты событий. События, соответствующие каждому намерению, документируются в отдельном атрибуте документации намерений.

И еще вам нужно подтвердить намерения для получения members(intents):

import discord
intents = discord.Intents.default()
intents.members = True  # Subscribe to the privileged members intent.
client = discord.Client(intents=intents)

Подробнее об этом - intents (Введены с 1.5 Discord.py, когда Discord ужесточил правила)

UPDATE: Связи с большой нагрузкой на шлюзы, теперь Discord требует подтвердить намерения для использования данных.

Чтобы ваш бот мог получить список участников надо :

  1. зайди в discord.com/developers
  2. выбрать свое App
  3. зайди в раздел Bot
  4. Прокрутить до Privileged Gateway Intents и включить там два пункта.

DISCORD

→ Ссылка