开始将event迁移进新架构

pull/1215/head
Windpicker-owo 2025-08-23 13:47:56 +08:00
parent 253a1a35d1
commit a82c1a2d2d
5 changed files with 30 additions and 20 deletions

6
bot.py
View File

@ -63,10 +63,10 @@ async def graceful_shutdown(): # sourcery skip: use-named-expression
try: try:
logger.info("正在优雅关闭麦麦...") logger.info("正在优雅关闭麦麦...")
from src.plugin_system.core.events_manager import events_manager from src.plugin_system.apis.event_api import get_event
from src.plugin_system.base.component_types import EventType
# 触发 ON_STOP 事件 # 触发 ON_STOP 事件
_ = await events_manager.handle_mai_events(event_type=EventType.ON_STOP) on_stop_event = get_event("on_stop")
await on_stop_event.activate()
# 停止所有异步任务 # 停止所有异步任务
await async_task_manager.stop_and_wait_all_tasks() await async_task_manager.stop_and_wait_all_tasks()

View File

@ -24,7 +24,7 @@ from src.chat.frequency_control.focus_value_control import focus_value_control
from src.chat.express.expression_learner import expression_learner_manager from src.chat.express.expression_learner import expression_learner_manager
from src.person_info.relationship_builder_manager import relationship_builder_manager from src.person_info.relationship_builder_manager import relationship_builder_manager
from src.person_info.person_info import Person from src.person_info.person_info import Person
from src.plugin_system.base.component_types import ChatMode, EventType, ActionInfo from src.plugin_system.base.component_types import ChatMode, ActionInfo
from src.plugin_system.core import events_manager from src.plugin_system.core import events_manager
from src.plugin_system.apis import generator_api, send_api, message_api, database_api from src.plugin_system.apis import generator_api, send_api, message_api, database_api
from src.mais4u.mai_think import mai_thinking_manager from src.mais4u.mai_think import mai_thinking_manager
@ -438,10 +438,13 @@ class HeartFChatting:
# actions_before_now_block=actions_before_now_block, # actions_before_now_block=actions_before_now_block,
message_id_list=message_id_list, message_id_list=message_id_list,
) )
if not await events_manager.handle_mai_events(
EventType.ON_PLAN, None, prompt_info[0], None, self.chat_stream.stream_id from src.plugin_system.apis.event_api import get_event
): # 触发 ON_PLAN 事件
return False on_plan_event = get_event("on_plan")
if not await on_plan_event.activate(None, prompt_info[0], None, self.chat_stream.stream_id):
return
with Timer("规划器", cycle_timers): with Timer("规划器", cycle_timers):
action_to_use_info, _ = await self.action_planner.plan( action_to_use_info, _ = await self.action_planner.plan(
mode=mode, mode=mode,

View File

@ -258,7 +258,10 @@ class ChatBot:
logger.info(f"命令处理完成,跳过后续消息处理: {cmd_result}") logger.info(f"命令处理完成,跳过后续消息处理: {cmd_result}")
return return
if not await events_manager.handle_mai_events(EventType.ON_MESSAGE, message): from src.plugin_system.apis.event_api import get_event
# 触发 ON_MESSAGE 事件
on_message_event = get_event("on_message")
if not await on_message_event.activate(message):
return return
# 确认从接口发来的message是否有自定义的prompt模板信息 # 确认从接口发来的message是否有自定义的prompt模板信息

View File

@ -203,12 +203,12 @@ class DefaultReplyer:
if not prompt: if not prompt:
logger.warning("构建prompt失败跳过回复生成") logger.warning("构建prompt失败跳过回复生成")
return False, llm_response return False, llm_response
from src.plugin_system.core.events_manager import events_manager
from src.plugin_system.apis.event_api import get_event
# 触发 POST_LLM 事件
post_llm_event = get_event("post_llm")
if not from_plugin: if not from_plugin:
if not await events_manager.handle_mai_events( if not await post_llm_event.activate(None, prompt, None, stream_id=stream_id):
EventType.POST_LLM, None, prompt, None, stream_id=stream_id
):
raise UserWarning("插件于请求前中断了内容生成") raise UserWarning("插件于请求前中断了内容生成")
# 4. 调用 LLM 生成回复 # 4. 调用 LLM 生成回复
@ -223,10 +223,14 @@ class DefaultReplyer:
llm_response.reasoning = reasoning_content llm_response.reasoning = reasoning_content
llm_response.model = model_name llm_response.model = model_name
llm_response.tool_calls = tool_call llm_response.tool_calls = tool_call
if not from_plugin and not await events_manager.handle_mai_events(
EventType.AFTER_LLM, None, prompt, llm_response, stream_id=stream_id from src.plugin_system.apis.event_api import get_event
): # 触发 AFTER_LLM 事件
after_llm_event = get_event("on_message")
if not from_plugin:
if not await after_llm_event.activate(None, prompt, llm_response, stream_id=stream_id):
raise UserWarning("插件于请求后取消了内容生成") raise UserWarning("插件于请求后取消了内容生成")
except UserWarning as e: except UserWarning as e:
raise e raise e
except Exception as llm_e: except Exception as llm_e:

View File

@ -124,7 +124,7 @@ class MainSystem:
# 触发 ON_START 事件 # 触发 ON_START 事件
on_start_event = get_event("on_start") on_start_event = get_event("on_start")
_ = await on_start_event.activate() await on_start_event.activate()
# logger.info("已触发 ON_START 事件") # logger.info("已触发 ON_START 事件")
try: try:
init_time = int(1000 * (time.time() - init_start_time)) init_time = int(1000 * (time.time() - init_start_time))