refactor: 恢复命令权限设置

This commit is contained in:
RockChinQ
2024-02-06 23:57:21 +08:00
parent 2a913ed24c
commit b5b67ad958
5 changed files with 24 additions and 11 deletions

View File

@@ -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]

View File

@@ -42,6 +42,9 @@ class CommandOperator(metaclass=abc.ABCMeta):
name: str
"""名称,搜索到时若符合则使用"""
path: str
"""路径所有父节点的name的连接用于定义命令权限"""
alias: list[str]
"""同name"""

View File

@@ -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,

View File

@@ -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(

View File

@@ -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(