mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-11-01 13:25:18 +08:00
2.5 KiB
2.5 KiB
每日对话限制插件
按会话限制 LangBot 每天的对话次数,并内置可视化管理页面,可查看、配置和重置各会话的限制——可用于生产环境。
功能
- 按会话的每日限制——每个私聊 / 群聊独立计数
- 管理页面(位于 LangBot 后台),可以:
- 查看所有被追踪的会话,含今日用量与进度条
- 设置新会话的默认上限
- 为单个会话单独设置上限
- 手动重置单个会话计数,或一键全部重置
- 停止追踪(移除)某个会话
- 修改超限提示语、静默模式、重置时区与重置时间点——无需重启
- 静默模式——超限消息直接丢弃,不回复
- 时区感知重置——可配置每日重置的 UTC 偏移与时间点
- 持久化——所有状态存储在插件存储中,重启后依然保留
组件
| 路径 | 类型 | 作用 |
|---|---|---|
main.py |
Plugin | 共享状态、计数/限制/重置逻辑、持久化 |
components/event_listener/ |
EventListener | 对每次对话计数,达到上限时拦截 |
components/pages/manage/ |
Page | 管理界面(会话、默认值、手动重置) |
配置项
以下为初始默认值;所有项均可在管理页面中实时修改。
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
daily_limit |
integer | 50 |
每个会话每天的默认对话次数上限。0 表示不限制。 |
limit_message |
string | 您今天的对话次数已达上限,请明天再来吧~ |
超出限制时显示的提示语。 |
reset_timezone_offset |
integer | 8 |
每日重置的 UTC 偏移小时数(如东八区为 8,东九区为 9)。 |
reset_hour |
integer | 0 |
每天重置计数器的时间点(按配置的时区)。 |
silent_mode |
boolean | false |
开启后超限消息将被静默丢弃。 |
工作原理
一个会话即 {类型}:{ID}——某个具体的私聊或群聊。监听器挂接
PersonNormalMessageReceived 与 GroupNormalMessageReceived,对每条消息检查该会话计数是否
达到其有效上限(会话单独设置的值,或全局默认值)。达到上限时,根据配置回复提示语或静默丢弃
(静默模式),并阻止默认的 LLM 流程。
计数器在配置时区的配置时间点滚动重置。管理页面通过插件的 handle_api 读写同一份内存 + 持久化
状态,因此修改会立即生效。