如何为同一命令的不同子功能设置不同冷却时长?
解决work命令子功能的冷却矛盾问题
核心修正思路
不要等命令执行完再返回标识字符串来设置冷却,而是先解析用户输入的命令参数,提前判断子功能类型,再对应执行冷却校验。
具体执行步骤
- 第一步:先解析用户输入的命令,直接区分三种场景:
- 识别到输入为
-work list:直接执行列出可用工作的逻辑,跳过冷却校验 - 识别到输入为
-work apply:先检查用户是否处于1天冷却期内,若不在冷却期则执行更改工作的逻辑,同时记录当前时间作为冷却起始点;若在冷却期则直接提示用户无法操作 - 识别到输入仅为
-work:先检查用户是否处于1小时冷却期内,若不在冷却期则生成随机数,同时记录当前时间作为冷却起始点;若在冷却期则直接提示用户无法操作
- 识别到输入为
- 第二步:将冷却校验逻辑完全前置到功能执行之前,不需要依赖命令执行后的返回值来判断冷却类型,直接从命令参数确定对应的冷却规则。
原思路的问题根源
之前想靠命令输出work_apply、work_work这类标识来区分冷却,本质是把冷却判断放在了功能执行之后,但冷却的核心目的是阻止用户在限制时间内重复触发功能,必须先完成校验再执行功能,否则用户已经触发了功能逻辑,再设置冷却就完全失去了限制意义。
内容的提问来源于stack exchange,提问作者disitific
相关产品推荐
相关产品推荐

