diff --git a/src/plugins/PFC/chat_states.py b/src/plugins/PFC/chat_states.py index 0253ea6dd..dc7b728b0 100644 --- a/src/plugins/PFC/chat_states.py +++ b/src/plugins/PFC/chat_states.py @@ -100,15 +100,15 @@ class NotificationManager: """ print(1145145511114445551111444) if target not in self._handlers: - print("没11有target") + # print("没11有target") self._handlers[target] = {} if notification_type not in self._handlers[target]: - print("没11有notification_type") + # print("没11有notification_type") self._handlers[target][notification_type] = [] - print(self._handlers[target][notification_type]) - print(f"注册1111111111111111111111处理器: {target} {notification_type} {handler}") + # print(self._handlers[target][notification_type]) + # print(f"注册1111111111111111111111处理器: {target} {notification_type} {handler}") self._handlers[target][notification_type].append(handler) - print(self._handlers[target][notification_type]) + # print(self._handlers[target][notification_type]) def unregister_handler(self, target: str, notification_type: NotificationType, handler: NotificationHandler): """注销通知处理器 diff --git a/src/plugins/PFC/message_sender.py b/src/plugins/PFC/message_sender.py index 76b07945f..bc4499ed9 100644 --- a/src/plugins/PFC/message_sender.py +++ b/src/plugins/PFC/message_sender.py @@ -3,7 +3,8 @@ from src.common.logger import get_module_logger from ..chat.chat_stream import ChatStream from ..chat.message import Message from ..message.message_base import Seg -from src.plugins.chat.message import MessageSending +from src.plugins.chat.message import MessageSending, MessageSet +from src.plugins.chat.message_sender import message_manager logger = get_module_logger("message_sender") @@ -39,9 +40,11 @@ class DirectMessageSender: message_sending = MessageSending(segments=segments) # 发送消息 - await chat_stream.send_message(message_sending) - logger.info(f"消息已发送: {content}") + message_set = MessageSet(chat_stream, message_sending.message_id) + message_set.add_message(message_sending) + message_manager.add_message(message_set) + logger.info(f"PFC消息已发送: {content}") except Exception as e: - logger.error(f"发送消息失败: {str(e)}") + logger.error(f"PFC消息发送失败: {str(e)}") raise diff --git a/src/plugins/PFC/pfc.py b/src/plugins/PFC/pfc.py index 727a8f1ba..9dda2b1f5 100644 --- a/src/plugins/PFC/pfc.py +++ b/src/plugins/PFC/pfc.py @@ -298,7 +298,13 @@ class DirectMessageSender: def __init__(self): self.logger = get_module_logger("direct_sender") self.storage = MessageStorage() - + + async def send_via_ws(self, message: MessageSending) -> None: + try: + await global_api.send_message(message) + except Exception as e: + raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e + async def send_message( self, chat_stream: ChatStream, @@ -334,22 +340,23 @@ class DirectMessageSender: # 处理消息 await message.process() + + message_json = message.to_dict() # 发送消息 try: - message_json = message.to_dict() - end_point = global_config.api_urls.get(chat_stream.platform, None) - - if not end_point: - raise ValueError(f"未找到平台:{chat_stream.platform} 的url配置") - - await global_api.send_message_REST(end_point, message_json) - - # 存储消息 - await self.storage.store_message(message, message.chat_stream) - - self.logger.info(f"直接发送消息成功: {content[:30]}...") - + end_point = global_config.api_urls.get(message.message_info.platform, None) + if end_point: + # logger.info(f"发送消息到{end_point}") + # logger.info(message_json) + try: + await global_api.send_message_REST(end_point, message_json) + except Exception as e: + logger.error(f"REST方式发送失败,出现错误: {str(e)}") + logger.info("尝试使用ws发送") + await self.send_via_ws(message) + else: + await self.send_via_ws(message) + logger.success(f"PFC消息已发送: {content}") except Exception as e: - self.logger.error(f"直接发送消息失败: {str(e)}") - raise + logger.error(f"PFC消息发送失败: {str(e)}") diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index a3c56f636..3dc732274 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -65,10 +65,6 @@ class ChatBot: - 没有思维流相关的状态管理 - 更简单直接的回复逻辑 - 3. pfc_chatting模式:仅进行消息处理 - - 不进行任何回复 - - 只处理和存储消息 - 所有模式都包含: - 消息过滤 - 记忆激活