diff options
-rw-r--r-- | ATRI/plugins/code_runner/__init__.py | 4 | ||||
-rw-r--r-- | ATRI/plugins/manage/plugin.py | 29 |
2 files changed, 22 insertions, 11 deletions
diff --git a/ATRI/plugins/code_runner/__init__.py b/ATRI/plugins/code_runner/__init__.py index 95d3b0c..88196e8 100644 --- a/ATRI/plugins/code_runner/__init__.py +++ b/ATRI/plugins/code_runner/__init__.py @@ -39,8 +39,8 @@ async def _(event: MessageEvent, opt: str = ArgPlainText("opt")): await code_runner.finish(CodeRunner().help()) content = MessageSegment.at(user_id) + str(await CodeRunner().runner(unescape(opt))) - is_save = MessageChecker(str(content)).check_cq_code - if not is_save: + is_safe = MessageChecker(str(content)).check_cq_code + if not is_safe: await code_runner.finish("有潜在的风险, 不予发送") await code_runner.finish(Message(content)) diff --git a/ATRI/plugins/manage/plugin.py b/ATRI/plugins/manage/plugin.py index 044216d..c5742f0 100644 --- a/ATRI/plugins/manage/plugin.py +++ b/ATRI/plugins/manage/plugin.py @@ -2,6 +2,7 @@ import json from pathlib import Path from typing import Union from pip import main as pipmain +from asyncio import as_completed import nonebot @@ -12,9 +13,14 @@ from ATRI.service import Service, ServiceTools from .models import NonebotPluginInfo -_NONEBOT_STORE_URL = ( - "https://jsd.imki.moe/gh/nonebot/nonebot2@master/website/static/plugins.json" -) +_NONEBOT_STORE_URLS = [ + "https://nonebot.dev/plugins.json", + "https://jsd.imki.moe/gh/nonebot/nonebot2@master/website/static/plugins.json", + "https://raw.fastgit.org/nonebot/nonebot2/master/website/static/plugins.json", + "https://cdn.jsdelivr.net/gh/nonebot/nonebot2@master/website/static/plugins.json", + "https://cdn.staticaly.com/gh/nonebot/nonebot2@master/website/static/plugins.json", + "https://jsd.cdn.zzko.cn/gh/nonebot/nonebot2@master/website/static/plugins.json", +] _plugin_list = dict() @@ -53,12 +59,17 @@ class NonebotPluginManager: global _plugin_list if not _plugin_list: - try: - data = await request.get(_NONEBOT_STORE_URL) - _plugin_list = {plugin["module_name"]: plugin for plugin in data.json()} - log.success("刷新 Nonebot 商店成功") - except Exception: - log.warning("刷新 Nonebot 商店失败") + tasks = [request.get(url) for url in _NONEBOT_STORE_URLS] + for future in as_completed(tasks, timeout=114514): + try: + data = await future + _plugin_list = { + plugin["module_name"]: plugin for plugin in data.json() + } + log.success("刷新 Nonebot 商店成功") + return + except Exception: + log.warning("刷新 Nonebot 商店失败, 尝试下一个链接") def get_plugin_info(self) -> Union[NonebotPluginInfo, None]: if plugin_data := _plugin_list.get(self._plugin_name): |