You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py斜杠命令可运行但抛出错误,求原因及解决方法

问题解决

错误根源

你的代码存在两处问题:

  1. 未处理空参数:当用户执行命令时不指定成员,member会是None,此时调用member.display_avatar会触发AttributeError
  2. 对象类型错误:member.display_avatar是Discord的Asset类实例,不能直接传递给ctx.send(),必须转换为可发送的格式(如图片URL)

修复代码

@cerium.slash_command(name="avatar", description="获取指定用户的头像")
async def avatar(ctx, *, member: discord.Member = None):
    # 若未指定成员,默认使用命令发起者
    target_member = member or ctx.author
    # 获取头像的直接访问链接
    avatar_link = target_member.display_avatar.url
    
    # 方式1:发送Embed展示头像(推荐,更美观)
    embed = discord.Embed(title=f"{target_member.name}的头像")
    embed.set_image(url=avatar_link)
    await ctx.send(embed=embed)
    
    # 方式2:直接发送头像链接(简洁)
    # await ctx.send(avatar_link)

额外说明

  • display_avatar会优先返回用户的自定义头像,若用户没有自定义头像则返回默认头像
  • 用member or ctx.author是Python中处理默认值的简洁写法,等价于member if member is not None else ctx.author

内容的提问来源于stack exchange,提问作者Bhavyadeep Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:26:35