#python #discord #discord.py
Вопрос:
в принципе, у меня есть команда, которая сообщает мне таблицу лидеров для системы выравнивания на сервере Discord, однако вместо имени пользователей в таблице лидеров отображается «Нет». Я просмотрел весь Интернет, но, похоже, не могу найти для этого решения. Кто-нибудь знает, как это исправить, чтобы вместо этого отображались имена пользователей?
async def leaderboard(ctx, x=10):
with open('level.json', 'r') as f:
users = json.load(f)
leaderboard = {}
total=[]
for user in list(users[str(ctx.guild.id)]):
name = str(user)
total_amt = users[str(ctx.guild.id)][str(user)]['experience']
leaderboard[total_amt] = name
total.append(total_amt)
total = sorted(total,reverse=True)
em = discord.Embed(
title = f'Top {x} people in {ctx.guild.name}',
description = 'The highest level people on this server'
)
index = 1
for amt in total:
id_ = leaderboard[amt]
member = bot.get_user(id_)
em.add_field(name = f'{index}: {member}', value = f'{amt}', inline=False)
if index == x:
break
else:
index = 1
await ctx.send(embed = em)```
Ответ №1:
в этом случае, если вы используете bot.get_user()
его, он не будет кэшировать участника до тех пор, пока у вас не будет разрешения intents.members. Так что в этом случае вы должны вы await bot.fetch_user()