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

Discord.py报错:'Command' object has no attribute 'cooldown' 问题排查

问题原因与解决方案

核心原因

90%以上的该类报错都是装饰器顺序错误导致的:discord.py的功能装饰器(比如冷却、权限校验等)必须放在@bot.command()装饰器的上方,你当前的写法顺序颠倒,导致cooldown装饰器作用在了已经生成的Command对象上,而非原始函数上,触发属性不存在报错。

解决方案

方案1:调整装饰器顺序(推荐)

把@commands.cooldown放到@bot.command()之前即可,正确写法示例:

@commands.cooldown(1, 60, commands.BucketType.user)
@bot.command()
async def your_command(ctx):
    # 命令具体逻辑

方案2:手动给命令对象设置冷却

如果调整顺序后仍然报错,可以直接给生成的命令对象手动绑定冷却规则:

@bot.command()
async def your_command(ctx):
    # 命令具体逻辑

# 手动设置冷却
your_command.cooldown = commands.CooldownMapping.from_cooldown(1, 60, commands.BucketType.user)

方案3:排查环境与命名冲突

如果以上方案都无效,按以下步骤排查:

  • 确认当前使用的discord相关库版本和之前正常运行时的版本一致,衍生分支(如pycord、nextcord)的特殊API规则要对应官方文档
  • 检查代码中是否存在命名冲突,比如自定义了名为cooldown的变量、命令,或者错误覆盖了commands模块对象
  • 确认commands模块的导入路径正确,示例导入写法:from discord.ext import commands

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:06:00