修复napcat插件
This commit is contained in:
1
plugins/napcat_adapter_plugin/CONSTS.py
Normal file
1
plugins/napcat_adapter_plugin/CONSTS.py
Normal file
@@ -0,0 +1 @@
|
||||
PLUGIN_NAME = "napcat_adapter"
|
||||
@@ -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" # 好友正在输入
|
||||
|
||||
@@ -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",""):
|
||||
|
||||
@@ -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处理失败")
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user