From b086bbf015832e6d23018777fbc242f6c45f8495 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 15 Aug 2023 19:08:58 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E6=8F=92=E4=BB=B6=E9=87=8D=E8=BD=BD?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/plugins/__init__.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/plugins/__init__.py b/app/plugins/__init__.py index fafc32d6..392ca73e 100644 --- a/app/plugins/__init__.py +++ b/app/plugins/__init__.py @@ -4,12 +4,13 @@ from typing import Any, List, Dict, Tuple from app.chain import ChainBase from app.core.config import settings -from app.core.event import EventManager +from app.core.event import EventManager, eventmanager, Event from app.db.models import Base from app.db.plugindata_oper import PluginDataOper from app.db.systemconfig_oper import SystemConfigOper from app.helper.message import MessageHelper from app.schemas import Notification, NotificationType, MessageChannel +from app.schemas.types import EventType class PluginChian(ChainBase): @@ -35,7 +36,7 @@ class _PluginBase(metaclass=ABCMeta): plugin_name: str = "" # 插件描述 plugin_desc: str = "" - + def __init__(self): # 插件数据 self.plugindata = PluginDataOper() @@ -147,6 +148,7 @@ class _PluginBase(metaclass=ABCMeta): 保存插件数据 :param key: 数据key :param value: 数据值 + :param plugin_id: 插件ID """ if not plugin_id: plugin_id = self.__class__.__name__ @@ -181,3 +183,16 @@ class _PluginBase(metaclass=ABCMeta): channel=channel, mtype=mtype, title=title, text=text, image=image, link=link, userid=userid )) + + @eventmanager.register(EventType.PluginReload) + def reload(self, event: Event): + """ + 重新加载插件 + """ + plugin_id = event.event_data.get("plugin_id") + if not plugin_id: + return + conf = self.get_config(plugin_id) + if not conf: + return + self.init_plugin(conf)