:ballon: feat: 使用正则表达式过滤掉 /model 可能暴露的 api_key

Squashed:

更新正则表达式

🎈 auto fixes by pre-commit hooks

Update main.py

Update main.py

chore: bugfixes
This commit is contained in:
Futureppo
2025-03-26 16:40:25 +08:00
committed by Soulter
parent aca18fab0f
commit 0e8d52b591
+30 -1
View File
@@ -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