【发布时间】:2019-06-27 05:35:14
【问题描述】:
所以我试图从 id 或标签中获取用户对象,但是我使用的是用户帐户而不是机器人帐户,所以我不能使用 get_user_info() 有没有办法在用户帐户上执行此操作?
【问题讨论】:
标签: discord discord.py
所以我试图从 id 或标签中获取用户对象,但是我使用的是用户帐户而不是机器人帐户,所以我不能使用 get_user_info() 有没有办法在用户帐户上执行此操作?
【问题讨论】:
标签: discord discord.py
如果您使用的是commands,则可以使用转换器:
@bot.command(pass_context=True)
async def mycommand(ctx, user: discord.User):
# user is a User object
否则,您可以使用Client.get_all_members 获取您可以看到的所有Member 对象。
from discord.utils import get
user = get(bot.get_all_members(), id="1234")
if user:
# found the user
else:
# Not found the user
【讨论】:
你可以使用:
ctx.message.server.get_member(id) or message.server.get_member(id) # id must be of type int
这将返回一个discord.Member 对象。
如果你知道用户 id,我建议改用bot.get_user(user_id)。
【讨论】:
ctx.message.server.get_member(id) or message.server.get_member(id)
我无法对上一个答案发表评论(因为声誉问题),但请确保 id 是 int type here。
【讨论】:
对我来说,只有这个有效,所以如果其他都无效,你可以试试这个:
user = await message.guild.query_members(user_ids=[userid]) # list of members with userid
user = user[0] # there should be only one so get the first item in the list
【讨论】:
这也将返回您的用户对象,但不返回您的成员对象。想要会员对象请关注AJ Lee's answer
user = await client.fetch_user(user_id)
【讨论】:
好的,有很多方法可以做到这一点,但我使用这个
@commands.command()
async def id(self, ctx, *, user_id):
user = ctx.message.guild.get_member(user_id) or None
if user != None:
# Found the user
ctx.send(user)
else:
# Can't find the user
ctx.send("**Try that again**, this time add a user's id(**of this server**)")
【讨论】: