From 79dc194dd67b1730a78690a8b7e7bf704bfda6f3 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:18:08 +0800 Subject: [PATCH 1/2] feat(plugin): add kwargs support for post_message --- app/plugins/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/plugins/__init__.py b/app/plugins/__init__.py index 4c9a0b6e..ad0720ee 100644 --- a/app/plugins/__init__.py +++ b/app/plugins/__init__.py @@ -225,7 +225,8 @@ class _PluginBase(metaclass=ABCMeta): return self.plugindata.del_data(plugin_id, key) def post_message(self, channel: MessageChannel = None, mtype: NotificationType = None, title: str = None, - text: str = None, image: str = None, link: str = None, userid: str = None, username: str = None): + text: str = None, image: str = None, link: str = None, userid: str = None, username: str = None, + **kwargs): """ 发送消息 """ @@ -233,7 +234,7 @@ class _PluginBase(metaclass=ABCMeta): link = settings.MP_DOMAIN(f"#/plugins?tab=installed&id={self.__class__.__name__}") self.chain.post_message(Notification( channel=channel, mtype=mtype, title=title, text=text, - image=image, link=link, userid=userid, username=username + image=image, link=link, userid=userid, username=username, **kwargs )) def close(self): From dc9a54e74f5586460c881c70aa6fb7b0ecbc0368 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:32:42 +0800 Subject: [PATCH 2/2] fix(command): ensure command data isolation by using deepcopy --- app/command.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/command.py b/app/command.py index 3d581efd..aa96ff74 100644 --- a/app/command.py +++ b/app/command.py @@ -1,3 +1,4 @@ +import copy import threading import traceback from typing import Any, Union, Dict, Optional @@ -303,7 +304,7 @@ class Command(metaclass=Singleton): ) else: # 命令 - cmd_data = command['data'] if command.get('data') else {} + cmd_data = copy.deepcopy(command['data']) if command.get('data') else {} args_num = ObjectUtils.arguments(command['func']) if args_num > 0: if cmd_data: