From b5b67ad9589c0988297ab4e93a3b2cb8865f4910 Mon Sep 17 00:00:00 2001 From: RockChinQ <1010553892@qq.com> Date: Tue, 6 Feb 2024 23:57:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=81=A2=E5=A4=8D=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E6=9D=83=E9=99=90=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/command/cmdmgr.py | 18 ++++++++++++++++++ pkg/command/operator.py | 3 +++ pkg/pipeline/bansess/bansess.py | 7 +------ pkg/platform/manager.py | 5 +---- pkg/plugin/setting.py | 2 +- 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/pkg/command/cmdmgr.py b/pkg/command/cmdmgr.py index b8521751..03f84e21 100644 --- a/pkg/command/cmdmgr.py +++ b/pkg/command/cmdmgr.py @@ -5,6 +5,7 @@ import typing from ..core import app, entities as core_entities from ..provider import entities as llm_entities from . import entities, operator, errors +from ..config import manager as cfg_mgr from .operators import func, plugin, default, reset, list as list_cmd, last, next, delc, resend, prompt, cmd, help, version, update @@ -21,6 +22,23 @@ class CommandManager: self.ap = ap async def initialize(self): + + # 设置各个类的路径 + def set_path(cls: operator.CommandOperator, ancestors: list[str]): + cls.path = '.'.join(ancestors + [cls.name]) + for op in operator.preregistered_operators: + if op.parent_class == cls: + set_path(op, ancestors + [cls.name]) + + for cls in operator.preregistered_operators: + if cls.parent_class is None: + set_path(cls, []) + + # 应用命令权限配置 + for cls in operator.preregistered_operators: + if cls.path in self.ap.command_cfg.data['privilege']: + cls.lowest_privilege = self.ap.command_cfg.data['privilege'][cls.path] + # 实例化所有类 self.cmd_list = [cls(self.ap) for cls in operator.preregistered_operators] diff --git a/pkg/command/operator.py b/pkg/command/operator.py index d0b731a9..48ca8daf 100644 --- a/pkg/command/operator.py +++ b/pkg/command/operator.py @@ -42,6 +42,9 @@ class CommandOperator(metaclass=abc.ABCMeta): name: str """名称,搜索到时若符合则使用""" + path: str + """路径,所有父节点的name的连接,用于定义命令权限""" + alias: list[str] """同name""" diff --git a/pkg/pipeline/bansess/bansess.py b/pkg/pipeline/bansess/bansess.py index 60d23584..f56babe2 100644 --- a/pkg/pipeline/bansess/bansess.py +++ b/pkg/pipeline/bansess/bansess.py @@ -9,13 +9,8 @@ from ...config import manager as cfg_mgr @stage.stage_class('BanSessionCheckStage') class BanSessionCheckStage(stage.PipelineStage): - banlist_mgr: cfg_mgr.ConfigManager - async def initialize(self): - self.banlist_mgr = await cfg_mgr.load_python_module_config( - "banlist.py", - "res/templates/banlist-template.py" - ) + pass async def process( self, diff --git a/pkg/platform/manager.py b/pkg/platform/manager.py index 931c5902..7c07459d 100644 --- a/pkg/platform/manager.py +++ b/pkg/platform/manager.py @@ -131,14 +131,11 @@ class PlatformManager: async def send(self, event, msg, check_quote=True, check_at_sender=True): - if check_at_sender and self.ap.platform_cfg.data['at-sender']: + if check_at_sender and self.ap.platform_cfg.data['at-sender'] and isinstance(event, GroupMessage): msg.insert( 0, Plain(" \n") ) - - # 当回复的正文中包含换行时,quote可能会自带at,此时就不再单独添加at,只添加换行 - # if "\n" not in str(msg[1]) or self.ap.platform_cfg.data['platform-adapter'] == 'nakuru': msg.insert( 0, At( diff --git a/pkg/plugin/setting.py b/pkg/plugin/setting.py index 156a99e6..1ffc0009 100644 --- a/pkg/plugin/setting.py +++ b/pkg/plugin/setting.py @@ -17,7 +17,7 @@ class SettingManager: async def initialize(self): self.settings = await cfg_mgr.load_json_config( 'plugins/plugins.json', - 'res/templates/plugin-setting-template.json' + 'templates/plugin-settings.json' ) async def sync_setting(