Discord bot не возвращает всех участников

#python #discord #discord.py-rewrite

#python #Discord #discord.py

Вопрос:

я создаю discord bot и хочу добавить !server команду для просмотра информации о сервере. я добавляю раздел участников, но он возвращает 1, но на моем сервере есть 2 участника-человека и 4 бота (все мои) Почему? Это код:

 @bot.command()
async def server(ctx):
    membersInServer = ctx.guild.members
    botsInServer = list(filter(filterOnlyBots, membersInServer))
    serv_emb = discord.Embed(title = f'Info about server {ctx.guild.name}')
    serv_emb.add_field(name = 'Members', value = f'All: {len(membersInServer)}nBots: {len(botsInServer)}')
    await ctx.send(embed = serv_emb)
  

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

1. Либо понизьте свою зависимость до discord.py>=1.4,<1.5 или используйте новый шлюз, но включите намерения, см. discordpy.readthedocs.io/en/latest/intents.html#intents-primer

Ответ №1:

Я рекомендую не полагаться на более старую версию discord.py , поскольку это, вероятно, помешает вам получить доступ к новым функциям и исправлениям ошибок в будущем.

Во-первых, включите привилегированное намерение участников в вашем приложении Discord, перейдя https://discord.com/developers/applications/<app_id>/bot и проверив «НАМЕРЕНИЕ УЧАСТНИКОВ СЕРВЕРА».

Затем используйте намерения участников следующим образом:

 import discord

intents = discord.Intents(members=True)
client = commands.Bot(command_prefix="!", intents=intents)

# The remainder of your code...
  

И вы готовы приступить к работе!

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

1. эй, почему я не пометил это как ответ два года назад? только что узнал, что я спрашивал об этом… сейчас я даже не использую discord