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

Discord.py交互斜杠指令冷却重置求助:彩票Bot需跳过冷却

解决Discord.py中指定场景重置命令冷却的问题

你用app_commands.checks.cooldown设置的冷却,直接调用remove_check()是不对的——这个方法是把整个冷却检查器从命令上移除,而非重置单个用户的冷却状态。要针对特定用户/场景重置冷却,得操作冷却桶(cooldown bucket)的实例。

正确的重置方式

discord.py的冷却系统会把每个用户的冷却数据存在命令的_buckets属性里,你可以通过生成对应key来重置目标用户的冷却:

把你代码里的这段:

test.remove_check() #place remove cool down here

替换成:

# 获取该命令的冷却桶实例
cool_down = test._buckets
# 生成和冷却设置中一致的key(对应你设置的lambda (i.guild_id, i.user.id))
user_key = cool_down.key(interaction)
# 重置该key对应的冷却
cool_down.reset(user_key)

为什么之前的方法无效

remove_check()会把整个冷却检查器从命令上删掉,之后所有用户都不会再触发冷却,这显然不是你要的“特定场景跳过”。而通过_buckets.reset(key),只会清除当前交互用户在对应服务器下的冷却记录,完全符合你的需求。

注意事项

  • 确保test命令确实绑定了冷却检查器,不然_buckets属性可能不存在
  • 生成key时必须和你设置cooldown时的keylambda逻辑完全一致,不然找不到对应的冷却记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:42:28