无法获取用户名 discord.py

Cant get user name discord.py

我正在为我最喜欢的 twitch 流媒体和中等长度的故事短片制作一个机器人,我需要该机器人的配置文件功能。当你在第二个参数中不@某人时它会起作用,但我希望人们能够看到另一个用户的个人资料。

async def profile(ctx, user=None):
  if user:
    user = discord.User.display_name
  else:
    user = ctx.message.author.name
    
  with open('users.json', 'r') as f:
    file = json.load(f)

  await ctx.send(f'PP: ``{file[user]}``')

users.json 看起来像这样:

您的代码在当前阶段相当混乱。让我解释一下:

  • 您没有正确访问用户的方法,而是调用一个空对象。
  • 您使用两种不同的方式获取名称,通过 namedisplay_name,这是两个不同的名称。除此之外,此方法没有考虑到两个用户可能具有相同的名称。

您可以在命令本身中定义 discord.Member。如果没有提到用户,这将默认为命令作者 ctx.author(与 ctx.message.author 相同)。

在下面的代码中,您会注意到我定义变量 user_info 的两种方式。如果您要访问基于不和谐用户名的号码,我强烈建议用用户 ID 替换名称,以便您可以通过 get_member 或类似方式访问其他不和谐用户信息。否则,请继续使用 user.name.

请查看下面修改后的代码。

async def profile(ctx, user:discord.Member=None):
    if not user:
        user = ctx.author

    # either continue to save with the name..
    user_info = user.name # or user.display_name but don't use both!
    # ..or save with their user id
    user_info = str(user.id)

    with open('users.json', 'r') as f:
        file = json.load(f)

    await ctx.send(f'PP: ``{file[user_info]}``')