企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# @Limit >[success] 核心`v1.16.0`增加 有时候,你可能不希望你的某个监听函数被别人频繁的触发,可能这个监听你只希望它5秒内、10秒内、甚至1分钟内只会触发一次。 如果你有这种需求,那么你可能会用得到`@Limit`注解。 此注解代表"限流",被其标注的监听函数会在指定时间段内只被触发一次。 ## **使用** ```java @OnPrivate @Limit(value = 5) public void listen(PrivateMsg msg, MsgSender sender){ sender.SENDER.sendPrivateMsg(msg, msg.getMsg()); } ``` 上述的监听函数的含义是:listen监听函数每次触发都会冷却5秒。 ## **参数** `@Limit`注解的参数及其含义如下: | 参数名 | 类型 | 含义 | 默认值 | | --- | --- | --- |--- | | value | long | 冷却时长 | 无,必填项 | | timeUnit | TimeUnit | 冷却时长的时间类型 | TimeUnit.SECONDS,即“秒” | | code | boolean | 是否区分送信人 | true | | group | boolean | 是否区分群 | true | | bot | boolean | 是否区分bot | false | 其中,“是否区分XXX”的选项即为如果区分对象不同,则单独计算冷却时间。 例如value为10的时候,如果code和group都为true,则不同的人时间计算是不同的,而如果code为false,则一个人触发了监听,开启了监听冷却,其他人也无法触发监听了。 ## **实现** 此功能通过内部实现的监听函数拦截器`LimitIntercept`实现,此拦截器的优先级为`PriorityConstant.THIRD`,即为`3`。 # 施工中