无法获取用户名 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 看起来像这样:
您的代码在当前阶段相当混乱。让我解释一下:
- 您没有正确访问用户的方法,而是调用一个空对象。
- 您使用两种不同的方式获取名称,通过
name
和 display_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]}``')
我正在为我最喜欢的 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 看起来像这样:
您的代码在当前阶段相当混乱。让我解释一下:
- 您没有正确访问用户的方法,而是调用一个空对象。
- 您使用两种不同的方式获取名称,通过
name
和display_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]}``')