diff --git a/basic_plugins/init_plugin_config/init_plugins_config.py b/basic_plugins/init_plugin_config/init_plugins_config.py index c4346075..5fb57ffa 100755 --- a/basic_plugins/init_plugin_config/init_plugins_config.py +++ b/basic_plugins/init_plugin_config/init_plugins_config.py @@ -92,11 +92,14 @@ def init_plugins_config(data_path): if user_config_file.exists(): with open(user_config_file, "r", encoding="utf8") as f: _data = _yaml.load(f) + # 数据替换 for plugin in Config.keys(): _tmp_data[plugin] = {} for k in Config[plugin].keys(): if _data.get(plugin) and k in _data[plugin].keys(): Config.set_config(plugin, k, _data[plugin][k]) + if level2module := Config.get_level2module(plugin, k): + admin_manager.set_admin_level(level2module, _data[plugin][k]) _tmp_data[plugin][k] = Config.get_config(plugin, k) Config.save() temp_file = Path() / "configs" / "temp_config.yaml" @@ -145,3 +148,4 @@ def init_plugins_config(data_path): logger.error(f"生成简易配置注释错误 {type(e)}:{e}") if temp_file.exists(): temp_file.unlink() + diff --git a/configs/utils/__init__.py b/configs/utils/__init__.py index 2bbba45f..7bf96d5c 100644 --- a/configs/utils/__init__.py +++ b/configs/utils/__init__.py @@ -29,7 +29,7 @@ class ConfigsManager: name: Optional[str] = None, help_: Optional[str] = None, default_value: Optional[str] = None, - _override: bool = False + _override: bool = False, ): """ 为插件添加一个配置,不会被覆盖,只有第一个生效 @@ -61,6 +61,7 @@ class ConfigsManager: "name": name.strip() if isinstance(name, str) else name, "help": help_.strip() if isinstance(help_, str) else help_, "default_value": default_value, + "level_module": _module, } def remove_plugin_config(self, module: str): @@ -119,6 +120,17 @@ class ConfigsManager: return self._data[module][key]["value"] return None + def get_level2module(self, module: str, key: str) -> Optional[str]: + """ + 获取指定key所绑定的module,一般为权限等级 + :param module: 模块名 + :param key: 配置名称 + :return: + """ + if self._data.get(module) is not None: + if self._data[module].get(key) is not None: + return self._data[module][key].get("level_module") + def get(self, key: str): """ 获取插件配置数据 @@ -158,3 +170,4 @@ class ConfigsManager: def __getitem__(self, key): return self._data[key] + diff --git a/plugins/coser/__init__.py b/plugins/coser/__init__.py index 947dc567..3694f18c 100755 --- a/plugins/coser/__init__.py +++ b/plugins/coser/__init__.py @@ -3,6 +3,8 @@ from nonebot.typing import T_State from nonebot.adapters.cqhttp import Bot, MessageEvent from utils.message_builder import image from services.log import logger +from utils.manager import withdraw_message_manager +from configs.config import Config __zx_plugin_name__ = "coser" __plugin_usage__ = """ @@ -21,6 +23,13 @@ __plugin_settings__ = { "limit_superuser": False, "cmd": ["cos", "coser", "括丝", "COS", "Cos", "cOS", "coS"], } +__plugin_configs__ = { + "WITHDRAW_COS_MESSAGE": { + "value": (0, 1), + "help": "自动撤回,参1:延迟撤回色图时间(秒),0 为关闭 | 参2:监控聊天类型,0(私聊) 1(群聊) 2(群聊+私聊)", + "default_value": (0, 1), + }, +} coser = on_command( "cos", aliases={"coser", "括丝", "COS", "Cos", "cOS", "coS"}, priority=5, block=True @@ -33,7 +42,13 @@ url = "http://iw233.cn/API/cos.php" @coser.handle() async def _(bot: Bot, event: MessageEvent, state: T_State): try: - await coser.send(image(url)) + msg_id = await coser.send(image(url)) + withdraw_message_manager.withdraw_message( + event, + msg_id["message_id"], + Config.get_config("coser", "WITHDRAW_COS_MESSAGE"), + ) except Exception as e: await coser.send("你cos给我看!") logger.error(f"coser 发送了未知错误 {type(e)}:{e}") + diff --git a/utils/manager/group_manager.py b/utils/manager/group_manager.py index e0104311..53c6f579 100755 --- a/utils/manager/group_manager.py +++ b/utils/manager/group_manager.py @@ -2,9 +2,15 @@ from typing import Optional, List, Union, Dict from pathlib import Path from .data_class import StaticData from utils.utils import get_matchers, get_bot +from configs.config import Config import nonebot +Config.add_plugin_config( + "group_manager", "DEFAULT_GROUP_LEVEL", 5, help_="默认群权限", default_value=5 +) + + class GroupManager(StaticData): """ 群权限 | 功能 | 聊天时间 管理器 @@ -274,7 +280,7 @@ class GroupManager(StaticData): 参数: :param group_id: 群号 """ - default_group_level = 5 # Config.get_config("group_manager") + default_group_level = Config.get_config("group_manager", "DEFAULT_GROUP_LEVEL") if not default_group_level: default_group_level = 5 if not self._data["group_manager"].get(group_id): @@ -293,3 +299,4 @@ class GroupManager(StaticData): del self._data["super"]["close_plugins"] return _x return None +