diff --git a/README.md b/README.md index c99a11c6..fb2230ff 100644 --- a/README.md +++ b/README.md @@ -245,7 +245,10 @@ __Docker 最新版本由 [Sakuracio](https://github.com/Sakuracio) 提供__ ### 2022/5/26 -* 修复[滴滴滴]会被转义成[滴滴滴]导致无法触发的问题 +* 修复\[滴滴滴]会被转义成[滴滴滴]导致无法触发的问题 +* 将一些错误以中文提示输出 +* 更新BT搜索源地址 [@pull/668](https://github.com/HibiKier/zhenxun_bot/pull/668) +* 更新抽卡插件 [@pull/667](https://github.com/HibiKier/zhenxun_bot/pull/667) ### 2022/5/25 diff --git a/basic_plugins/init_plugin_config/init_plugins_config.py b/basic_plugins/init_plugin_config/init_plugins_config.py index bf0dff4b..eb6be1ad 100755 --- a/basic_plugins/init_plugin_config/init_plugins_config.py +++ b/basic_plugins/init_plugin_config/init_plugins_config.py @@ -56,7 +56,9 @@ def init_plugins_config(data_path): _override=True, ) else: - Config.add_plugin_config(matcher.plugin_name, key, plugin_configs[key]) + Config.add_plugin_config( + matcher.plugin_name, key, plugin_configs[key] + ) else: plugin_configs = _data[matcher.plugin_name] for key in plugin_configs: @@ -96,14 +98,25 @@ def init_plugins_config(data_path): 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): - try: - admin_manager.set_admin_level(level2module, _data[plugin][k]) - except KeyError: - logger.warning(f"{level2module} 设置权限等级失败:{_data[plugin][k]}") - _tmp_data[plugin][k] = Config.get_config(plugin, k) + try: + 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): + try: + admin_manager.set_admin_level( + level2module, _data[plugin][k] + ) + except KeyError: + logger.warning( + f"{level2module} 设置权限等级失败:{_data[plugin][k]}" + ) + _tmp_data[plugin][k] = Config.get_config(plugin, k) + except AttributeError as e: + raise AttributeError( + f"{e}\n**********************************************\n" + f"****** 可能为config.yaml配置文件填写不规范 ******\n" + f"**********************************************" + ) Config.save() temp_file = Path() / "configs" / "temp_config.yaml" try: diff --git a/configs/utils/__init__.py b/configs/utils/__init__.py index 7e96faa9..611fc9f7 100644 --- a/configs/utils/__init__.py +++ b/configs/utils/__init__.py @@ -2,6 +2,7 @@ from typing import Optional, Any, Union from pathlib import Path from ruamel.yaml import YAML from ruamel import yaml +from ruamel.yaml.scanner import ScannerError class ConfigsManager: @@ -21,9 +22,24 @@ class ConfigsManager: if file.exists(): with open(file, "r", encoding="utf8") as f: self._data = _yaml.load(f) + if not self._data: + self.file.unlink() + raise ValueError( + "配置文件为空!\n" + "***********************************************************\n" + "****** 配置文件 plugins2config.yaml 为空,已删除,请重启 ******\n" + "***********************************************************" + ) if self._simple_file.exists(): - with open(self._simple_file, "r", encoding="utf8") as f: - self._simple_data = _yaml.load(f) + try: + with open(self._simple_file, "r", encoding="utf8") as f: + self._simple_data = _yaml.load(f) + except ScannerError as e: + raise ScannerError( + f"{e}\n**********************************************\n" + f"****** 可能为config.yaml配置文件填写不规范 ******\n" + f"**********************************************" + ) def add_plugin_config( self, @@ -86,7 +102,10 @@ class ConfigsManager: :param value: 值 """ if module in self._data.keys(): - if self._data[module].get(key) is not None and self._data[module][key] != value: + if ( + self._data[module].get(key) is not None + and self._data[module][key] != value + ): self._data[module][key]["value"] = value self._simple_data[module][key] = value self.save() @@ -115,7 +134,9 @@ class ConfigsManager: self._data[module][key]["default_value"] = value self.save() - def get_config(self, module: str, key: str, default: Optional[Any] = None) -> Optional[Any]: + def get_config( + self, module: str, key: str, default: Optional[Any] = None + ) -> Optional[Any]: """ 获取指定配置值 :param module: 模块名 @@ -161,7 +182,11 @@ class ConfigsManager: if save_simple_data: with open(self._simple_file, "w", encoding="utf8") as f: yaml.dump( - self._simple_data, f, indent=2, Dumper=yaml.RoundTripDumper, allow_unicode=True + self._simple_data, + f, + indent=2, + Dumper=yaml.RoundTripDumper, + allow_unicode=True, ) path = path if path else self.file with open(path, "w", encoding="utf8") as f: