You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Discord机器人pfp命令无报错但无法显示指定用户头像

解决Discord机器人pfp命令无法显示用户头像的问题

嘿,我瞅了你的代码,问题其实挺明显的——你在调用头像URL的时候用错变量啦!

问题根源

你的命令参数明明定义了member : discord.Member,但设置图片的时候却写了ctx.member.avatar_urlctx对象里根本没有member这个属性,你应该用传入的member参数来获取头像。另外,在较新的discord.py版本里,avatar_url已经被弃用了,推荐用avatar.url;要是想兼容用户没设置自定义头像的情况,用display_avatar.url会更稳妥,它会自动优先取用户的自定义头像,没有的话就用默认头像。

修正后的代码

@client.command()
async def pfp(ctx, *, member: discord.Member):
    embed = discord.Embed(colour=random.choice(mycolor))
    mylist1 = ["What a creep", "stalker"]
    embed.set_author(name=f"{random.choice(mylist1)}")
    # 改用member的display_avatar.url,兼容自定义头像和默认头像
    embed.set_image(url=member.display_avatar.url)
    await ctx.send(embed=embed)

额外优化提示

  • 如果你的discord.py版本还停留在v1.x,可以用member.avatar_url或者member.default_avatar_url,但还是建议升级到新版本,display_avatar用起来更省心。
  • 可以加个错误处理,比如用户没指定成员时给出提示,让命令更健壮:
@pfp.error
async def pfp_error(ctx, error):
    if isinstance(error, commands.MissingRequiredArgument):
        await ctx.send("请指定一个用户哦!")

内容的提问来源于stack exchange,提问作者bat beat

火山引擎 最新活动