From 0e8d52b59193c3e136670d7942b2d2991bc7d00d Mon Sep 17 00:00:00 2001 From: Futureppo Date: Wed, 26 Mar 2025 16:40:25 +0800 Subject: [PATCH] =?UTF-8?q?:ballon:=20feat:=20=E4=BD=BF=E7=94=A8=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F=E8=BF=87=E6=BB=A4=E6=8E=89?= =?UTF-8?q?=20/model=20=E5=8F=AF=E8=83=BD=E6=9A=B4=E9=9C=B2=E7=9A=84=20api?= =?UTF-8?q?=5Fkey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Squashed: 更新正则表达式 :balloon: auto fixes by pre-commit hooks Update main.py Update main.py chore: bugfixes --- packages/astrbot/main.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/astrbot/main.py b/packages/astrbot/main.py index b0f51d98f..1f5f23cd8 100644 --- a/packages/astrbot/main.py +++ b/packages/astrbot/main.py @@ -2,6 +2,7 @@ import aiohttp import datetime import builtins import traceback +import re import astrbot.api.star as star import astrbot.api.event.filter as filter from astrbot.api.event import AstrMessageEvent, MessageEventResult @@ -13,6 +14,7 @@ from astrbot.core.provider.sources.dify_source import ProviderDify from astrbot.core.utils.io import download_dashboard, get_dashboard_version from astrbot.core.star.star_handler import star_handlers_registry, StarHandlerMetadata from astrbot.core.star.star import star_map +from astrbot.core.star.star_manager import PluginManager from astrbot.core.star.filter.command import CommandFilter from astrbot.core.star.filter.command_group import CommandGroupFilter from astrbot.core.star.filter.permission import PermissionTypeFilter @@ -196,7 +198,29 @@ class Main(star.Star): return await self.context._star_manager.turn_on_plugin(oper2) event.set_result(MessageEventResult().message(f"插件 {oper2} 已启用。")) + elif oper1 == "get": + if not oper2: + raise Exception("请输入插件地址。") + if not event.is_admin(): + raise Exception( + "改指令限制仅管理员使用,且无法通过 /alter_cmd 更改。" + ) + if not oper2.startswith("http"): + oper2 = f"https://github.com/{oper2}" + logger.info(f"准备从 {oper2} 获取插件。") + + if self.context._star_manager: + star_mgr: PluginManager = self.context._star_manager + try: + await star_mgr.install_plugin(oper2) + event.set_result(MessageEventResult().message("获取插件成功。")) + except Exception as e: + logger.error(f"获取插件失败: {e}") + event.set_result( + MessageEventResult().message(f"获取插件失败: {e}") + ) + return else: # 获取插件帮助 plugin = self.context.get_registered_star(oper1) @@ -497,15 +521,20 @@ UID: {user_id} 此 ID 可用于设置管理员。 MessageEventResult().message("未找到任何 LLM 提供商。请先配置。") ) return + # 定义正则表达式匹配 API 密钥 + api_key_pattern = re.compile(r"key=[^&'\" ]+") if idx_or_name is None: models = [] try: models = await self.context.get_using_provider().get_models() except BaseException as e: + err_msg = api_key_pattern.sub( + "key=***", str(e) + ) message.set_result( MessageEventResult() - .message("获取模型列表失败: " + str(e)) + .message("获取模型列表失败: " + err_msg) .use_t2i(False) ) return