【问题标题】:'NoneType' object has no attribute 'avatar_url' in discord.py“NoneType”对象在 discord.py 中没有属性“avatar_url”
【发布时间】:2022-01-19 19:58:32
【问题描述】:
@client.command()
async def avatar(self, ctx, *,  avamember : discord.Member=None):
    userAvatarUrl = avamember.avatar_url
    await ctx.send(userAvatarUrl)

您好,上面的代码是我在 discord.py 中使用的。我正在尝试显示头像,但它不起作用。我得到的是:AttributeError: 'NoneType' object has no attribute 'avatar_url'

这里有什么问题?我该如何解决?

【问题讨论】:

  • 在尝试访问.avatar_url之前检查None
  • 你是如何调用这个命令的?是在齿轮里吗?

标签: python discord.py


【解决方案1】:

您在函数声明中将avamember 设置为None,然后尝试访问属性。由于avamember is None,它没有这样的属性。要解决此问题,请获取一个实际的 discord.Member 对象。

编辑:我假设该对象实际上具有请求的属性。

【讨论】:

    【解决方案2】:

    这可能是因为您调用了错误的命令。要获取discord.Member 对象,您必须提及用户,否则,它将返回None

    删除*self(除非它在cog 中)。在这种情况下discord.Member=None 也有点没用(除非你想用它来检查命令是否正确使用)。

    @client.command()
    async def avatar(ctx, avamember : discord.Member):
        userAvatarUrl = avamember.avatar_url
        await ctx.send(userAvatarUrl)
    

    然后正确使用你的命令:


    如果你的命令在Cog

    1. @client.command() 更改为@commands.command()
    2. ctx 之前添加self

    【讨论】:

      【解决方案3】:

      您将avamember 设置为None,因此如果您不传递用户,则会引发错误,因此请确保您正确调用它。

      我建议更改它以避免错误:

      async def avatar(self, ctx, *, avamember: discord.Member):
      

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 2021-05-06
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多