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

discord.py机器人使用cogs后slash命令运行报参数重复错误求助

错误排查与修复方案

核心报错原因

TypeError: add() got multiple values for argument 'x' 报错的根本原因是:Cog类中的所有命令方法属于类的实例方法,第一个参数必须是类实例本身(即self),你漏写了这个参数导致参数顺序全部错位。
具体错位逻辑:调用方法时系统会自动传入类实例作为第一个参数,你的方法第一个参数写的是ctx,此时类实例就会被赋值给ctx,原本应该传入的ctx被赋值给x,你手动输入的x参数就变成了多余的重复值,触发报错。

修复步骤

    1. 给Cog类内所有的斜杠命令方法加上self作为第一个参数,以add方法为例,修改后代码如下:
@cog_ext.cog_slash(description = "Add two numbers")
async def add(self, ctx, x: float, y : float) :
    def addition(x : float, y : float) :
      return x + y
    response = (f"The result of addition between {x} and {y} is {addition(x, y)}.")
    await ctx.send(response)

subs、multi、div等其他所有命令方法都要做相同修改,在第一个参数位置加上self

    1. 修正Cog类的构造函数写法:Python的类构造函数需要双下划线包裹,你当前的_init_要改成__init__,否则类初始化会存在隐患:
class UpdateCode(commands.Cog) :
  def __init__(self, client) :
    self.client = client
    1. 可选语法修复:main.py里的status列表中," Schrodinger's cat ???"这行末尾缺少逗号,会导致前后两个字符串自动拼接,建议补上逗号。

全部修改完成后重启机器人即可正常触发斜杠命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:18:01