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