mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-24 19:17:14 +00:00
refactor: 恢复命令权限设置
This commit is contained in:
@@ -5,6 +5,7 @@ import typing
|
|||||||
from ..core import app, entities as core_entities
|
from ..core import app, entities as core_entities
|
||||||
from ..provider import entities as llm_entities
|
from ..provider import entities as llm_entities
|
||||||
from . import entities, operator, errors
|
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
|
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
|
self.ap = ap
|
||||||
|
|
||||||
async def initialize(self):
|
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]
|
self.cmd_list = [cls(self.ap) for cls in operator.preregistered_operators]
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ class CommandOperator(metaclass=abc.ABCMeta):
|
|||||||
name: str
|
name: str
|
||||||
"""名称,搜索到时若符合则使用"""
|
"""名称,搜索到时若符合则使用"""
|
||||||
|
|
||||||
|
path: str
|
||||||
|
"""路径,所有父节点的name的连接,用于定义命令权限"""
|
||||||
|
|
||||||
alias: list[str]
|
alias: list[str]
|
||||||
"""同name"""
|
"""同name"""
|
||||||
|
|
||||||
|
|||||||
@@ -9,13 +9,8 @@ from ...config import manager as cfg_mgr
|
|||||||
@stage.stage_class('BanSessionCheckStage')
|
@stage.stage_class('BanSessionCheckStage')
|
||||||
class BanSessionCheckStage(stage.PipelineStage):
|
class BanSessionCheckStage(stage.PipelineStage):
|
||||||
|
|
||||||
banlist_mgr: cfg_mgr.ConfigManager
|
|
||||||
|
|
||||||
async def initialize(self):
|
async def initialize(self):
|
||||||
self.banlist_mgr = await cfg_mgr.load_python_module_config(
|
pass
|
||||||
"banlist.py",
|
|
||||||
"res/templates/banlist-template.py"
|
|
||||||
)
|
|
||||||
|
|
||||||
async def process(
|
async def process(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -131,14 +131,11 @@ class PlatformManager:
|
|||||||
|
|
||||||
async def send(self, event, msg, check_quote=True, check_at_sender=True):
|
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(
|
msg.insert(
|
||||||
0,
|
0,
|
||||||
Plain(" \n")
|
Plain(" \n")
|
||||||
)
|
)
|
||||||
|
|
||||||
# 当回复的正文中包含换行时,quote可能会自带at,此时就不再单独添加at,只添加换行
|
|
||||||
# if "\n" not in str(msg[1]) or self.ap.platform_cfg.data['platform-adapter'] == 'nakuru':
|
|
||||||
msg.insert(
|
msg.insert(
|
||||||
0,
|
0,
|
||||||
At(
|
At(
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class SettingManager:
|
|||||||
async def initialize(self):
|
async def initialize(self):
|
||||||
self.settings = await cfg_mgr.load_json_config(
|
self.settings = await cfg_mgr.load_json_config(
|
||||||
'plugins/plugins.json',
|
'plugins/plugins.json',
|
||||||
'res/templates/plugin-setting-template.json'
|
'templates/plugin-settings.json'
|
||||||
)
|
)
|
||||||
|
|
||||||
async def sync_setting(
|
async def sync_setting(
|
||||||
|
|||||||
Reference in New Issue
Block a user