mirror of https://github.com/Mai-with-u/MaiBot.git
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
from typing import Dict
|
||
|
||
from src.common.logger import get_logger
|
||
|
||
logger = get_logger("frequency_control")
|
||
|
||
|
||
class FrequencyControl:
|
||
"""简化的频率控制类,仅管理不同chat_id的频率值"""
|
||
|
||
def __init__(self, chat_id: str):
|
||
self.chat_id = chat_id
|
||
# 发言频率调整值
|
||
self.talk_frequency_adjust: float = 1.0
|
||
|
||
def get_talk_frequency_adjust(self) -> float:
|
||
"""获取发言频率调整值"""
|
||
return self.talk_frequency_adjust
|
||
|
||
def set_talk_frequency_adjust(self, value: float) -> None:
|
||
"""设置发言频率调整值"""
|
||
self.talk_frequency_adjust = max(0.1, min(5.0, value))
|
||
|
||
|
||
class FrequencyControlManager:
|
||
"""频率控制管理器,管理多个聊天流的频率控制实例"""
|
||
|
||
def __init__(self):
|
||
self.frequency_control_dict: Dict[str, FrequencyControl] = {}
|
||
|
||
def get_or_create_frequency_control(self, chat_id: str) -> FrequencyControl:
|
||
"""获取或创建指定聊天流的频率控制实例"""
|
||
if chat_id not in self.frequency_control_dict:
|
||
self.frequency_control_dict[chat_id] = FrequencyControl(chat_id)
|
||
return self.frequency_control_dict[chat_id]
|
||
|
||
def remove_frequency_control(self, chat_id: str) -> bool:
|
||
"""移除指定聊天流的频率控制实例"""
|
||
if chat_id in self.frequency_control_dict:
|
||
del self.frequency_control_dict[chat_id]
|
||
return True
|
||
return False
|
||
|
||
def get_all_chat_ids(self) -> list[str]:
|
||
"""获取所有有频率控制的聊天ID"""
|
||
return list(self.frequency_control_dict.keys())
|
||
|
||
|
||
# 创建全局实例
|
||
frequency_control_manager = FrequencyControlManager()
|