【问题标题】:Discord.py: How do I get a member object from a user object?Discord.py:如何从用户对象中获取成员对象?
【发布时间】:2021-05-10 03:14:41
【问题描述】:

所以我有一个用户对象,但我想在公会中访问他们的昵称,我也有。 有没有办法做到这一点?还是我完全不了解。

谢谢。

我试过了,但没用:

intents = discord.Intents.default()
intents.members = True

@client.command(pass_context = True)
async def test(ctx,id):
  name = ctx.author.guild.get_member(id).nick
  return name

错误是:AttributeError: 'NoneType' object has no attribute 'nick'

【问题讨论】:

  • 你需要得到公会实例,然后你可以使用Guild.get_member方法
  • 我试过了,但没用,如上所示。
  • 您还需要启用intents.membersGuild.get_member 方法中您应该传递一个ID 而不是整个discord.User 实例
  • 虽然我在 Developer Portal 中启用了 Intent,但仍然出现同样的错误。
  • 您还需要在代码中启用它们。

标签: python discord discord.py


【解决方案1】:

最简单的方法是使用discord.Member,这样您就可以立即获取用户对象。这将接受 idmentionname 作为参数。

@client.command()
async def test(ctx, user: discord.Member):
    if user.nick == None:
        await ctx.send(f"Display name: {user.display_name}")
    else:
        await ctx.send(f"Nickname: {user.nick}")


但是,如果您想使用您提供的代码,您需要将您的id 转换为int。不过,这是假设用户有昵称。如果用户没有昵称,则返回None

@client.command(pass_context=True)
async def test(ctx, id:int):
    name = ctx.author.guild.get_member(id).nick
    await ctx.send(name)

【讨论】:

    猜你喜欢
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多