feat:PFC重构,模块化拆分
This commit is contained in:
45
src/plugins/PFC/waiter.py
Normal file
45
src/plugins/PFC/waiter.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from src.common.logger import get_module_logger
|
||||
from .chat_observer import ChatObserver
|
||||
|
||||
logger = get_module_logger("waiter")
|
||||
|
||||
class Waiter:
|
||||
"""等待器,用于等待对话流中的事件"""
|
||||
|
||||
def __init__(self, stream_id: str):
|
||||
self.stream_id = stream_id
|
||||
self.chat_observer = ChatObserver.get_instance(stream_id)
|
||||
|
||||
async def wait(self, timeout: float = 20.0) -> bool:
|
||||
"""等待用户回复或超时
|
||||
|
||||
Args:
|
||||
timeout: 超时时间(秒)
|
||||
|
||||
Returns:
|
||||
bool: 如果因为超时返回则为True,否则为False
|
||||
"""
|
||||
try:
|
||||
message_before = self.chat_observer.get_last_message()
|
||||
|
||||
# 等待新消息
|
||||
logger.debug(f"等待新消息,超时时间: {timeout}秒")
|
||||
|
||||
is_timeout = await self.chat_observer.wait_for_update(timeout=timeout)
|
||||
if is_timeout:
|
||||
logger.debug("等待超时,没有收到新消息")
|
||||
return True
|
||||
|
||||
# 检查是否是新消息
|
||||
message_after = self.chat_observer.get_last_message()
|
||||
if message_before and message_after and message_before.get("message_id") == message_after.get("message_id"):
|
||||
# 如果消息ID相同,说明没有新消息
|
||||
logger.debug("没有收到新消息")
|
||||
return True
|
||||
|
||||
logger.debug("收到新消息")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"等待时出错: {str(e)}")
|
||||
return True
|
||||
Reference in New Issue
Block a user