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

Discord.py 如何设置命令使用冷却时间 限制用户频繁使用beg命令刷收益

结论

完全可以实现这套调用等待机制,Discord.py 内置了成熟的命令冷却能力,不需要从零手写状态记录逻辑。

具体实现方案
  • 直接使用框架自带的 commands.cooldown 装饰器即可完成核心规则配置,支持按用户、频道、服务器多维度隔离冷却状态,匹配你“每个用户独立计算等待间隔”的需求。
    举个常规配置示例:如果要求用户调用一次beg后必须等待5分钟才能再次使用,装饰器参数配置为 @commands.cooldown(rate=1, per=300, type=commands.BucketType.member),其中:
    • rate=1 代表单个冷却周期内最多允许调用1次命令
    • per=300 代表冷却周期时长为300秒(即5分钟)
    • type=commands.BucketType.member 代表按服务器内单个用户为单位计算冷却,不同用户的冷却计时完全独立
  • 必须补充冷却触发的异常处理逻辑:默认情况下用户在冷却期内调用命令会直接抛出框架内置的 CommandOnCooldown 异常,没有任何用户可读的提示。需要在全局错误捕获事件中专门匹配这个异常,提取剩余等待时长给用户发送明确提示,避免无反馈的报错。
  • 如果需要灵活的自定义规则(比如VIP用户冷却时长更短、特定频道免除冷却限制),可以用动态冷却函数替代装饰器里的固定参数,根据用户身份、所在频道属性动态返回匹配的冷却时长,也可以手动调用命令对象的reset_cooldown(ctx)方法给符合条件的用户重置冷却计时。

注意:如果机器人采用多进程分片部署模式,框架默认的本地内存存储的冷却状态无法跨进程同步,这种场景需要搭配外部持久化存储(如Redis)保存冷却状态,才能保证规则全局生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 16:24:03