diff --git a/plugins/napcat_adapter_plugin/CONSTS.py b/plugins/napcat_adapter_plugin/CONSTS.py new file mode 100644 index 000000000..174602208 --- /dev/null +++ b/plugins/napcat_adapter_plugin/CONSTS.py @@ -0,0 +1 @@ +PLUGIN_NAME = "napcat_adapter" \ No newline at end of file diff --git a/plugins/napcat_adapter_plugin/event_types.py b/plugins/napcat_adapter_plugin/event_types.py index edc2f9ef3..433647a45 100644 --- a/plugins/napcat_adapter_plugin/event_types.py +++ b/plugins/napcat_adapter_plugin/event_types.py @@ -2,15 +2,16 @@ from enum import Enum class NapcatEvent(Enum): # napcat插件事件枚举类 - ON_RECEIVED_TEXT = "napcat_on_received_text" # 接收到文本消息 - ON_RECEIVED_FACE = "napcat_on_received_face" # 接收到表情消息 - ON_RECEIVED_REPLY = "napcat_on_received_reply" # 接收到回复消息 - ON_RECEIVED_IMAGE = "napcat_on_received_image" # 接收到图像消息 - ON_RECEIVED_RECORD = "napcat_on_received_record" # 接收到语音消息 - ON_RECEIVED_VIDEO = "napcat_on_received_video" # 接收到视频消息 - ON_RECEIVED_AT = "napcat_on_received_at" # 接收到at消息 - ON_RECEIVED_DICE = "napcat_on_received_dice" # 接收到骰子消息 - ON_RECEIVED_SHAKE = "napcat_on_received_shake" # 接收到屏幕抖动消息 - ON_RECEIVED_JSON = "napcat_on_received_json" # 接收到JSON消息 - ON_RECEIVED_RPS = "napcat_on_received_rps" # 接收到魔法猜拳消息 - ON_FRIEND_INPUT = "napcat_on_friend_input" # 好友正在输入 + class ON_RECEIVED(Enum): + TEXT = "napcat_on_received_text" # 接收到文本消息 + FACE = "napcat_on_received_face" # 接收到表情消息 + REPLY = "napcat_on_received_reply" # 接收到回复消息 + IMAGE = "napcat_on_received_image" # 接收到图像消息 + RECORD = "napcat_on_received_record" # 接收到语音消息 + VIDEO = "napcat_on_received_video" # 接收到视频消息 + AT = "napcat_on_received_at" # 接收到at消息 + DICE = "napcat_on_received_dice" # 接收到骰子消息 + SHAKE = "napcat_on_received_shake" # 接收到屏幕抖动消息 + JSON = "napcat_on_received_json" # 接收到JSON消息 + RPS = "napcat_on_received_rps" # 接收到魔法猜拳消息 + FRIEND_INPUT = "napcat_on_friend_input" # 好友正在输入 diff --git a/plugins/napcat_adapter_plugin/plugin.py b/plugins/napcat_adapter_plugin/plugin.py index 9d1a0110a..f1cc25c11 100644 --- a/plugins/napcat_adapter_plugin/plugin.py +++ b/plugins/napcat_adapter_plugin/plugin.py @@ -2,6 +2,8 @@ import sys import asyncio import json import websockets as Server +from . import event_types,CONSTS + from typing import List, Tuple from src.plugin_system import BasePlugin, BaseEventHandler, register_plugin, EventType, ConfigField, BaseAction, ActionActivationType @@ -98,7 +100,7 @@ class LauchNapcatAdapterHandler(BaseEventHandler): @register_plugin class NapcatAdapterPlugin(BasePlugin): - plugin_name = "napcat_adapter" + plugin_name = CONSTS.PLUGIN_NAME enable_plugin: bool = True dependencies: List[str] = [] # 插件依赖列表 python_dependencies: List[str] = [] # Python包依赖列表 @@ -119,7 +121,10 @@ class NapcatAdapterPlugin(BasePlugin): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - + + for e in event_types.NapcatEvent.ON_RECEIVED: + event_manager.register_event(e ,allowed_triggers=[self.plugin_name]) + def get_plugin_components(self): components = [] if self.get_config("plugin.enabled",""): diff --git a/plugins/napcat_adapter_plugin/src/recv_handler/message_handler.py b/plugins/napcat_adapter_plugin/src/recv_handler/message_handler.py index 9153134bf..0e4ba29fe 100644 --- a/plugins/napcat_adapter_plugin/src/recv_handler/message_handler.py +++ b/plugins/napcat_adapter_plugin/src/recv_handler/message_handler.py @@ -1,6 +1,8 @@ from ...event_types import NapcatEvent from src.plugin_system.core.event_manager import event_manager from src.common.logger import get_logger +from ...CONSTS import PLUGIN_NAME + logger = get_logger("napcat_adapter") from ..config import global_config @@ -329,14 +331,14 @@ class MessageHandler: case RealMessageType.text: ret_seg = await self.handle_text_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_TEXT,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.TEXT,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("text处理失败") case RealMessageType.face: ret_seg = await self.handle_face_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_FACE,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.FACE,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("face处理失败或不支持") @@ -344,7 +346,7 @@ class MessageHandler: if not in_reply: ret_seg = await self.handle_reply_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_REPLY,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.REPLY,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message += ret_seg else: logger.warning("reply处理失败") @@ -352,7 +354,7 @@ class MessageHandler: logger.debug(f"开始处理图片消息段") ret_seg = await self.handle_image_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_IMAGE,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.IMAGE,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) logger.debug(f"图片处理成功,添加到消息段") else: @@ -361,7 +363,7 @@ class MessageHandler: case RealMessageType.record: ret_seg = await self.handle_record_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_RECORD,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.RECORD,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.clear() seg_message.append(ret_seg) break # 使得消息只有record消息 @@ -370,7 +372,7 @@ class MessageHandler: case RealMessageType.video: ret_seg = await self.handle_video_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_VIDEO,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.VIDEO,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("video处理失败") @@ -381,28 +383,28 @@ class MessageHandler: raw_message.get("group_id"), ) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_AT,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.AT,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("at处理失败") case RealMessageType.rps: ret_seg = await self.handle_rps_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_RPS,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.RPS,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("rps处理失败") case RealMessageType.dice: ret_seg = await self.handle_dice_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_DICE,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.DICE,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("dice处理失败") case RealMessageType.shake: ret_seg = await self.handle_shake_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_SHAKE,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.SHAKE,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("shake处理失败") @@ -425,7 +427,7 @@ class MessageHandler: case RealMessageType.json: ret_seg = await self.handle_json_message(sub_message) if ret_seg: - await event_manager.trigger_event(NapcatEvent.ON_RECEIVED_JSON,message_seg=ret_seg) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.JSON,plugin_name=PLUGIN_NAME,message_seg=ret_seg) seg_message.append(ret_seg) else: logger.warning("json处理失败") diff --git a/plugins/napcat_adapter_plugin/src/recv_handler/notice_handler.py b/plugins/napcat_adapter_plugin/src/recv_handler/notice_handler.py index d1b5602db..be6b6a0c4 100644 --- a/plugins/napcat_adapter_plugin/src/recv_handler/notice_handler.py +++ b/plugins/napcat_adapter_plugin/src/recv_handler/notice_handler.py @@ -6,6 +6,7 @@ from typing import Tuple, Optional from src.common.logger import get_logger logger = get_logger("napcat_adapter") + from ..config import global_config from ..config.features_config import features_manager from ..database import BanUser, db_manager, is_identical @@ -23,6 +24,8 @@ from ..utils import ( read_ban_list, ) +from ...CONSTS import PLUGIN_NAME + notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=100) unsuccessful_notice_queue: asyncio.Queue[MessageBase] = asyncio.Queue(maxsize=3) @@ -118,7 +121,7 @@ class NoticeHandler: case NoticeType.Notify.input_status: from src.plugin_system.core.event_manager import event_manager from ...event_types import NapcatEvent - await event_manager.trigger_event(NapcatEvent.ON_FRIEND_INPUT) + await event_manager.trigger_event(NapcatEvent.ON_RECEIVED.FRIEND_INPUT,plugin_name=PLUGIN_NAME) case _: logger.warning(f"不支持的notify类型: {notice_type}.{sub_type}") case NoticeType.group_ban: