#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
получить текущего участника и сравнить их.