对于 discord.py,我如何将作者的 id 变成不和谐用户的真实姓名?

2022-01-15 00:00:00 python discord.py

问题描述

我在使用 message.author.id 时遇到问题.当我要求机器人返回用户 ID 时,它会返回...用户 ID.但这不是我想要的.我想让它说出用户的不和谐名称(例如,而不是像 13284701972315 那样,它会说 MyName #0000).我正在制作一个机器人,它会根据命令给出布朗尼点数.这是它可能会说的内容和示例.

I'm having trouble with message.author.id. When I ask a bot to return the user's ID, it returns the well... user ID. But that's not what I want. I want it to say the user's discord name (for an example, instead of like 13284701972315 it would say MyName #0000). I'm making a bot which will give out brownie points on command. Here's and example of what it might say.

311661286213550091 给@AceFTW 22 分.他们目前有 22布朗尼点!

311661286213550091 has given 22 brownie points to @AceFTW. They currently have 22 brownie points!

我想这样说:

@tristan360 给了@AceFTW 22 分.他们目前有 22布朗尼点!

@tristan360 has given 22 brownie points to @AceFTW. They currently have 22 brownie points!

我正在寻找一种让机器人显示用户名而不是用户 ID 的方法.

I'm looking for a way for the bot to display the user's name instead of the user's ID.


解决方案

如果您已经有一个 Member 对象,则可以立即访问该名称.

If you have a Member object already, you can access the name straight away.

# member is <Member id=... name=MyName#0000>
member.name  # MyName
member.nick  # MyNick
member.display_name  # MyNick if nick is not None, else MyName
member.mention  # @MyName
str(member)  # MyName#0000

如果您没有 Member 对象,但有 Guild(discord.py 0.x 中的 Server),您可以使用 Guild.get_member 方法.

If you do not have a Member object, but do have a Guild (Server in discord.py 0.x,) you can use the Guild.get_member method.

member = guild.get_member(userID)
member.name  # MyName

如果您根本没有任何信息,可以使用 Client.get_user_info 方法.请注意,这将返回 User 而不是 Member,因此您将无法访问昵称、角色等.

If you don't have any information at all starting, you can use the Client.get_user_info method. Note, this returns a User not a Member, so you will not have access to nicknames, roles, etc.

user = bot.get_user_info(userID)
user.name  # MyName
user.nick  # Error

相关文章