summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/plugins/code_runner/__init__.py4
-rw-r--r--ATRI/plugins/manage/plugin.py29
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):