错误捕获

This commit is contained in:
HibiKier 2022-10-15 20:50:02 +08:00
parent 5ba303aada
commit 4f3f8de734
2 changed files with 53 additions and 49 deletions

View File

@ -292,6 +292,7 @@ PS: **ARM平台** 请使用全量版 同时 **如果你的机器 RAM < 1G 可能
* 我的道具改为图片形式 * 我的道具改为图片形式
* 商品添加图标与是否为被动道具(被动道具无法被主动使用) * 商品添加图标与是否为被动道具(被动道具无法被主动使用)
* 商品添加使用前方法和使用后方法类似hook使用方法具体查看文档或签到商品文件中注册的例子 * 商品添加使用前方法和使用后方法类似hook使用方法具体查看文档或签到商品文件中注册的例子
* 色图插件p站反向代理失效 [@pull/1139](https://github.com/HibiKier/zhenxun_bot/pull/1139)
### 2022/10/9 ### 2022/10/9

View File

@ -1,8 +1,8 @@
from pathlib import Path
from ruamel.yaml import YAML from ruamel.yaml import YAML
from utils.manager import plugins_manager from utils.manager import plugins_manager
from utils.utils import get_matchers from utils.utils import get_matchers
import nonebot from services.log import logger
try: try:
import ujson as json import ujson as json
@ -43,54 +43,57 @@ def init_plugins_data(data_path):
matcher.plugin_name, "version", plugin_data.get("version") matcher.plugin_name, "version", plugin_data.get("version")
) )
else: else:
plugin_version = None try:
if metadata: plugin_version = None
plugin_version = metadata.extra.get("version") if metadata:
if not plugin_version: plugin_version = metadata.extra.get("version")
if not plugin_version:
try:
plugin_version = _module.__getattribute__("__plugin_version__")
except AttributeError:
pass
if metadata:
plugin_name = metadata.name
else:
try:
plugin_name = _module.__getattribute__("__zx_plugin_name__")
except AttributeError:
plugin_name = matcher.plugin_name
plugin_author = None
if metadata:
plugin_author = metadata.extra.get('author')
try: try:
plugin_version = _module.__getattribute__("__plugin_version__") plugin_author = _module.__getattribute__("__plugin_author__")
except AttributeError: except AttributeError:
pass pass
if metadata: if matcher.plugin_name in plugins_manager.keys():
plugin_name = metadata.name plugins_manager.set_module_data(matcher.plugin_name, "error", False)
else: if matcher.plugin_name not in plugins_manager.keys():
try: plugins_manager.add_plugin_data(
plugin_name = _module.__getattribute__("__zx_plugin_name__") matcher.plugin_name,
except AttributeError: plugin_name=plugin_name,
plugin_name = matcher.plugin_name author=plugin_author,
plugin_author = None version=plugin_version,
if metadata: )
plugin_author = metadata.extra.get('author') # metadata不检测version
try: elif isinstance(plugin_version, str) or plugins_manager[matcher.plugin_name]["version"] is None or (
plugin_author = _module.__getattribute__("__plugin_author__") plugin_version is not None
except AttributeError: and plugin_version > float(plugins_manager[matcher.plugin_name]["version"])
pass ):
if matcher.plugin_name in plugins_manager.keys(): plugins_manager.set_module_data(
plugins_manager.set_module_data(matcher.plugin_name, "error", False) matcher.plugin_name, "plugin_name", plugin_name
if matcher.plugin_name not in plugins_manager.keys(): )
plugins_manager.add_plugin_data( plugins_manager.set_module_data(matcher.plugin_name, "author", plugin_author)
matcher.plugin_name, plugins_manager.set_module_data(
plugin_name=plugin_name, matcher.plugin_name, "version", plugin_version
author=plugin_author, )
version=plugin_version, if matcher.plugin_name in _data.keys():
) plugins_manager.set_module_data(
# metadata不检测version matcher.plugin_name, "error", _data[matcher.plugin_name]["error"]
elif isinstance(plugin_version, str) or plugins_manager[matcher.plugin_name]["version"] is None or ( )
plugin_version is not None plugins_manager.set_module_data(
and plugin_version > plugins_manager[matcher.plugin_name]["version"] matcher.plugin_name, "plugin_name", _data[matcher.plugin_name]["plugin_name"]
): )
plugins_manager.set_module_data( except Exception as e:
matcher.plugin_name, "plugin_name", plugin_name logger.error(f"插件数据 {matcher.plugin_name} 加载发生错误 {type(e)}{e}")
)
plugins_manager.set_module_data(matcher.plugin_name, "author", plugin_author)
plugins_manager.set_module_data(
matcher.plugin_name, "version", plugin_version
)
if matcher.plugin_name in _data.keys():
plugins_manager.set_module_data(
matcher.plugin_name, "error", _data[matcher.plugin_name]["error"]
)
plugins_manager.set_module_data(
matcher.plugin_name, "plugin_name", _data[matcher.plugin_name]["plugin_name"]
)
plugins_manager.save() plugins_manager.save()