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

Discord.py bot test命令运行报错 参数user转换discord.member失败且缺失参数

Discord机器人test命令异常修复方案

错误根因

  • 调用!test无参数报错:你在定义user参数时未设置默认值,discord.py的命令校验逻辑会在进入函数前就检测到参数缺失,直接抛出错误,不会执行你函数内部写的user==None兜底判断。
  • 带@用户调用报错:类型注解大小写错误,discord.py中成员类型的正确写法是discord.Member(首字母大写),你写的小写discord.member是模块路径,无法用于参数类型转换。
  • 额外隐藏问题:你代码中写死了取命令发送者ctx.author的头像,即便传入其他用户参数也不会生效;发送文件时调用的discord.file也是大小写错误,正确为discord.File。

修复后完整代码

@bot.command()
async def test(ctx, user: discord.Member = None):
    # 无参数时默认取命令发送者
    if user is None:
        user = ctx.author
    
    test = Image.open("test.jpg")
    # 改为取传入用户的头像,符合参数设计逻辑
    asset = user.avatar_url_as(size=128)
    data = BytesIO(await asset.read())
    pfp = Image.open(data)
    pfp = pfp.resize((177,177))
    test.paste(pfp,(446,339))

    test.save("test1.jpg")
    # 修正File类大小写错误
    await ctx.send(file=discord.File('test1.jpg'))

可选优化

如果遇到用户设置了服务器头像隐私、或者没有自定义头像的场景,可在头像读取逻辑外层加try-except块捕获异常,做默认头像的兜底处理,避免命令崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:48:04