python www.example. com 从id/tag获取用户对象

hwazgwia  于 2023-04-28  发布在  Python
关注(0)|答案(9)|浏览(122)

我正在使用discord.py库来构建一个discord bot。我试图从ID或标签中获取User对象,但是,我使用的是用户帐户而不是机器人帐户,因此无法使用get_user_info()。有没有办法在用户帐户上执行此操作?

a6b3iqyw

a6b3iqyw1#

如果你知道用户id,我建议你使用bot.get_user(user_id)

3duebb1j

3duebb1j2#

如果你使用的是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
sxpgvts3

sxpgvts33#

您可以用途:

ctx.message.server.get_member(id) or message.server.get_member(id) # id must be of type int

这将返回一个discord.Member对象。

ozxc1zmp

ozxc1zmp4#

这也将返回用户对象,但不返回成员对象。如果你想要成员对象,请按照AJ Lee's answer

user = await client.fetch_user(user_id)
xpcnnkqh

xpcnnkqh5#

ctx.message.server.get_member(id) or message.server.get_member(id)

我不能对前面的答案写评论(因为声誉),但要确保这里的id是int类型。

4xrmg8kj

4xrmg8kj6#

如果你已经有了ID,请调用user = await ctx.bot.fetch_user(user_id)。不要乱用权限。
如果您只有用户名和标签,则可以用途:

guild.fetch_members()
user = guild.get_member_named("Example#1234")

注意,您还需要在代码中打开成员意图和Discord Developer Portal,以便调用fetch_members()

intents = discord.Intents.default()
intents.members = True
super().__init__(
  command_prefix='!',
  intents=intents
)
cgh8pdjw

cgh8pdjw7#

对我来说,只有这个有效,所以如果其他的都不起作用,你可以试试这个:

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
ryhaxcpt

ryhaxcpt8#

有很多方法可以做到,但我用这个

@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**)")
lhcgjxsq

lhcgjxsq9#

如果你想给一个特定的用户发送一条消息,那么应该这样做:

@bot.command()   
async def test(ctx)
    user = bot.get_user(userid)
    await user.send("Example")

相关问题