Как мне заставить бота не только учитывать себя

#python #discord.py

Вопрос:

Этот код должен возвращать количество участников и их статус, независимо от того, подключены они к сети или нет. Однако он создал только одного участника как находящегося в Сети, а всех остальных в автономном режиме, что неверно. Когда я проверил, какие участники он рассматривал (print (member)), оказалось, что бот рассматривал только себя. Любая помощь в том, чтобы рассказать мне, как заставить бота учитывать членов сервера, а не самого себя, была бы признательна.

 @client.command()
async def stats(ctx):
    count=0 
    for member in ctx.guild.members: 
        if member.status is not discord.Status.offline:
            count  = 1 
            print(member)
    
    all_users = ctx.guild.member_count
    embed = discord.Embed(title=f'**{ctx.guild.name}** Stats', color=0x000)
    embed.add_field(name="Member Count", value=all_users)
    embed.add_field(name="Online", value=f'{count} :green_circle:', inline=True) 
    embed.add_field(name="Offline", value =f'{all_users - count} :red_circle:', inline = True)
    await ctx.send(embed=embed)
 

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

1. Включены ли у вас намерения участников?

2. Нет, и я не знаю, что это такое

3. Тогда это, вероятно, ваша проблема. Прочитайте о намерениях здесь: discordpy.readthedocs.io/en/stable/intents.html

Ответ №1:

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

Вы также можете использовать только -1 количество участников.

Если вы действительно хотите исключить только самого бота, вы можете использовать client.user , чтобы получить свой идентификатор пользователя и member.user получить текущего участника и сравнить их.