Discord.py — невозможно получить участников канала

#python #discord.py

#python #discord.py

Вопрос:

 print(message.guild.member_count)  # 7
print(len(message.guild.members)) # 1
for member in message.guild.members:
    print(str(member))  # the bot itself
  

Я пытаюсь получить участников канала Discord, но в нем отображается только сам бот. Раньше это работало, я вообще не менял код, но внезапно этого не происходит. Я дал боту права администратора, не знаю, что не так.

Комментарии:

1. Вы пытаетесь получить всех членов вашего сервера или только один канал?

Ответ №1:

Вам нужно сделать 2 вещи, которые используют класс данных Intents, и ваш код будет работать так, как ожидалось.

  1. Обновите портал разработчика, чтобы включить действия участника для вашего бота.

введите описание изображения здесь

  1. Добавьте следующий код в свой бот:
 intents = discord.Intents.default()
intents.members = True

bot = Bot(command_prefix=list(PREFIX), intents=intents)
  

Пожалуйста, посмотрите документацию Where’d my members go.

Ответ №2:

Если вы пытаетесь получить количество и имена всех членов вашей гильдии, используйте guild .fetch_members() .

 @client.event
async def on_ready():
    guild = client.get_guild(123456789)
    member_count = guild.member_count
    print(f"Total member count: {member_count}")
    async for member in guild.fetch_members(limit=150):
        print(member.name)
  

Также убедитесь, что вы настроили свои намерения так, как @DaveStSomeWhere сказал выше.