mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-23 07:33:53 +08:00
* 添加清空redis所有库的接口 --AdminController.java 添加了清除所有的接口 --RedisUtils.java 添加了清除redis所有key的方法,redisTemplate提供的清空方法已经被标记为弃用了,所有选择用执行lua脚本方式 * fix:修复使用本地配置时忘记附带提示词 * fix:修复意图识别插件名称格式bug * update:版本升级后强制刷新redis * update:增加单台设备每天最多聊天字数,防止被ddos --------- Co-authored-by: 剑雨 <2375294554@qq.com>
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import datetime
|
|
from typing import Dict, Tuple
|
|
|
|
# 全局字典,用于存储每个设备的每日输出字数
|
|
_device_daily_output: Dict[Tuple[str, datetime.date], int] = {}
|
|
# 记录最后一次检查的日期
|
|
_last_check_date: datetime.date = None
|
|
|
|
|
|
def reset_device_output():
|
|
"""
|
|
重置所有设备的每日输出字数
|
|
每天0点调用此函数
|
|
"""
|
|
_device_daily_output.clear()
|
|
|
|
|
|
def get_device_output(device_id: str) -> int:
|
|
"""
|
|
获取设备当日的输出字数
|
|
"""
|
|
current_date = datetime.datetime.now().date()
|
|
return _device_daily_output.get((device_id, current_date), 0)
|
|
|
|
|
|
def add_device_output(device_id: str, char_count: int):
|
|
"""
|
|
增加设备的输出字数
|
|
"""
|
|
current_date = datetime.datetime.now().date()
|
|
global _last_check_date
|
|
|
|
# 如果是第一次调用或者日期发生变化,清空计数器
|
|
if _last_check_date is None or _last_check_date != current_date:
|
|
_device_daily_output.clear()
|
|
_last_check_date = current_date
|
|
|
|
current_count = _device_daily_output.get((device_id, current_date), 0)
|
|
_device_daily_output[(device_id, current_date)] = current_count + char_count
|
|
|
|
|
|
def check_device_output_limit(device_id: str, max_output_size: int) -> bool:
|
|
"""
|
|
检查设备是否超过输出限制
|
|
:return: True 如果超过限制,False 如果未超过
|
|
"""
|
|
if not device_id:
|
|
return False
|
|
current_output = get_device_output(device_id)
|
|
return current_output >= max_output_size
|