Бот Discord — количество членов Гильдии… но не в guild.members

#discord #discord.py

#Discord #discord.py

Вопрос:

возникли проблемы с получением моего бота discord списка всех членов единственной гильдии, в которую он добавлен..

 async def on_ready(self):
    print("logged in as {0}".format(self.user))
    
    guilds = self.guilds        
    print("guilds: "   str(guilds))

    guild = self.get_guild(my_guild_id)
    print("guild members: "   str(guild.members))
  

Интересно то, что когда я распечатываю саму гильдию, она показывает количество членов 5 (что правильно). Однако при создании экземпляра объекта Guild и доступе к свойству members в качестве участника отображается только сам пользователь бота.

 guild members: [<Member id=12345678 name='testapp1_bot' discriminator='0683' bot=True nick=None guild=<Guild id=12345 name="ethandrower's server" shard_id=None chunked=False member_count=5>>]
guilds: [<Guild id=12345 name="ethandrower's server" shard_id=None chunked=False member_count=5>]
  

Я предполагаю, что это либо мое непонимание архитектуры «гильдий», либо разрешения для бота. Я добавил бота на сервер с полным доступом администратора, поэтому я немного озадачен тем, почему я вижу правильное количество участников, но не сами объекты участников?

Любая помощь будет высоко оценена!

Ответ №1:

Если вы используете последнюю версию discord.py т.е. 1.5.0, вам нужно будет включить намерение участника и применить его к вашему боту.

Как включить намерение участника: https://discordpy.readthedocs.io/en/latest/intents.html#privileged-intents

Подробнее о намерениях: https://discordpy.readthedocs.io/en/latest/intents.html