From 718449d6ac7fe81e79aa74140d507689ba7c7128 Mon Sep 17 00:00:00 2001 From: Ruochen Pan Date: Thu, 7 May 2026 09:00:56 +0800 Subject: [PATCH] fix(core): use correct asset filename in GitHub fallback download URL (#8046) * fix(core): use correct asset filename in GitHub fallback download URL * fix(core):resolve the tag via GitHub API with certifi SSL and proxy support. --- astrbot/core/utils/io.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/astrbot/core/utils/io.py b/astrbot/core/utils/io.py index 66d040836..d06f6a19a 100644 --- a/astrbot/core/utils/io.py +++ b/astrbot/core/utils/io.py @@ -289,9 +289,23 @@ async def download_dashboard( ) except BaseException as _: if latest: - dashboard_release_url = "https://github.com/AstrBotDevs/AstrBot/releases/latest/download/dist.zip" + # Resolve latest release tag from GitHub API to construct correct asset URL + ssl_context = ssl.create_default_context(cafile=certifi.where()) + async with aiohttp.ClientSession( + connector=aiohttp.TCPConnector(ssl=ssl_context), + trust_env=True, + ) as session: + async with session.get( + "https://api.github.com/repos/AstrBotDevs/AstrBot/releases/latest", + timeout=30, + headers={"Accept": "application/vnd.github+json"}, + ) as api_resp: + api_resp.raise_for_status() + release_data = await api_resp.json() + tag = release_data["tag_name"] else: - dashboard_release_url = f"https://github.com/AstrBotDevs/AstrBot/releases/download/{version}/dist.zip" + tag = version + dashboard_release_url = f"https://github.com/AstrBotDevs/AstrBot/releases/download/{tag}/AstrBot-{tag}-dashboard.zip" if proxy: dashboard_release_url = f"{proxy}/{dashboard_release_url}" await download_file(