Как заставить таблицу лидеров отображать имена вместо «Нет», используя json в Python?

#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()