events系统大体完成
This commit is contained in:
@@ -2,6 +2,7 @@ import asyncio
|
||||
import traceback
|
||||
|
||||
from rich.traceback import install
|
||||
from maim_message import Seg
|
||||
|
||||
from src.common.message.api import get_global_api
|
||||
from src.common.logger import get_logger
|
||||
@@ -66,8 +67,36 @@ class UniversalMessageSender:
|
||||
message.build_reply()
|
||||
logger.debug(f"[{chat_id}] 选择回复引用消息: {message.processed_plain_text[:20]}...")
|
||||
|
||||
from src.plugin_system.core.events_manager import events_manager
|
||||
from src.plugin_system.base.component_types import EventType
|
||||
|
||||
continue_flag, modified_message = await events_manager.handle_mai_events(
|
||||
EventType.POST_SEND_PRE_PROCESS, message=message, stream_id=chat_id
|
||||
)
|
||||
if not continue_flag:
|
||||
logger.info(f"[{chat_id}] 消息发送被插件取消: {str(message.message_segment)[:100]}...")
|
||||
return False
|
||||
if modified_message:
|
||||
if modified_message._modify_flags.modify_message_segments:
|
||||
message.message_segment = Seg(type="seglist", data=modified_message.message_segments)
|
||||
if modified_message._modify_flags.modify_plain_text:
|
||||
logger.warning(f"[{chat_id}] 插件修改了消息的纯文本内容,可能导致此内容被覆盖。")
|
||||
message.processed_plain_text = modified_message.plain_text
|
||||
|
||||
await message.process()
|
||||
|
||||
continue_flag, modified_message = await events_manager.handle_mai_events(
|
||||
EventType.POST_SEND, message=message, stream_id=chat_id
|
||||
)
|
||||
if not continue_flag:
|
||||
logger.info(f"[{chat_id}] 消息发送被插件取消: {str(message.message_segment)[:100]}...")
|
||||
return False
|
||||
if modified_message:
|
||||
if modified_message._modify_flags.modify_message_segments:
|
||||
message.message_segment = Seg(type="seglist", data=modified_message.message_segments)
|
||||
if modified_message._modify_flags.modify_plain_text:
|
||||
message.processed_plain_text = modified_message.plain_text
|
||||
|
||||
if typing:
|
||||
typing_time = calculate_typing_time(
|
||||
input_string=message.processed_plain_text,
|
||||
@@ -80,6 +109,18 @@ class UniversalMessageSender:
|
||||
if not sent_msg:
|
||||
return False
|
||||
|
||||
continue_flag, modified_message = await events_manager.handle_mai_events(
|
||||
EventType.AFTER_SEND, message=message, stream_id=chat_id
|
||||
)
|
||||
if not continue_flag:
|
||||
logger.info(f"[{chat_id}] 消息发送后续处理被插件取消: {str(message.message_segment)[:100]}...")
|
||||
return True
|
||||
if modified_message:
|
||||
if modified_message._modify_flags.modify_message_segments:
|
||||
message.message_segment = Seg(type="seglist", data=modified_message.message_segments)
|
||||
if modified_message._modify_flags.modify_plain_text:
|
||||
message.processed_plain_text = modified_message.plain_text
|
||||
|
||||
if storage_message:
|
||||
await self.storage.store_message(message, message.chat_stream)
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ class EventType(Enum):
|
||||
ON_PLAN = "on_plan"
|
||||
POST_LLM = "post_llm"
|
||||
AFTER_LLM = "after_llm"
|
||||
POST_SEND_PRE_PROCESS = "post_send_pre_process"
|
||||
POST_SEND = "post_send"
|
||||
AFTER_SEND = "after_send"
|
||||
UNKNOWN = "unknown" # 未知事件类型
|
||||
|
||||
Reference in New Issue
Block a user