简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

ErisPulse.Core.Event.throttle 模块


模块概述

事件处理器节流(throttle=)与防抖(debounce=,EPRFC-2026-001 方向八)

同一键(用户 / 会话 / 全局)上的事件在最小间隔内只放行一条,其余静默 丢弃(throttle);或窗口内只执行最后一条、取消前序(debounce)——手写 防刷屏 / 防抖逻辑的声明式替代。

提示

  1. throttle 实现为处理器条件机制上的框架包装器(条件函数与 detail_type / pattern / regex 组合);debounce 实现为处理器调用包装器(窗口内新事件 取消前序的待执行任务)
  2. 时长语法与命令 cooldown= / args= duration 一致(2s / 1h30m)
  3. throttle 状态存放于条件闭包内,处理器注销后随闭包被 GC 自动回收; debounce 的待执行任务随闭包存活,模块卸载后至多一个窗口期内自然结束
  4. throttle 命中丢弃仅输出 TRACE 日志(对称于作用域静默)

函数列表

_scope_key(kind: str, event: Any)

计算节流作用域键(复用 platform:bot:目标 会话键体系)


make_throttle_condition(throttle: str, throttle_key: str = 'user', handler_name: str = '')

构造节流条件函数(处理器条件机制的包装器)


make_debounce_wrapper(func: Callable, debounce: str, debounce_key: str = 'user', handler_name: str = '')

构造防抖调用包装器(窗口内同键事件只执行最后一条)

事件到达时取消同键前序的待执行任务,重新计时;窗口耗尽后才真正执行 最后一条事件的处理。functools.wraps 保留原签名(__wrapped__), 使注册期 extract_depends 仍能从原函数提取 Depends 声明。