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 шт):
Используйте 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 требует подтвердить намерения для использования данных.
Чтобы ваш бот мог получить список участников надо :
- зайди в discord.com/developers
- выбрать свое App
- зайди в раздел Bot
- Прокрутить до Privileged Gateway Intents и включить там два пункта.
