From c3e22694b665d1f0b8796accd89d8b46f403ce32 Mon Sep 17 00:00:00 2001 From: UnCLAS-Prommer Date: Mon, 26 Jan 2026 13:37:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E6=88=90=E5=BC=82=E6=AD=A5=E7=9A=84?= =?UTF-8?q?=E5=B0=9D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/utils.py b/src/utils.py index 78b0d0c..2efee24 100644 --- a/src/utils.py +++ b/src/utils.py @@ -5,6 +5,7 @@ import uuid import urllib3 import ssl import io +import asyncio from src.database import BanUser, db_manager from .logger import logger @@ -94,17 +95,20 @@ async def get_member_info(websocket: Server.ServerConnection, group_id: int, use logger.debug(socket_response) return socket_response.get("data") +def _blocking_download(url: str) -> bytes: + http = SSLAdapter() + response = http.request("GET", url, timeout=10) + if response.status != 200: + raise Exception(f"HTTP Error: {response.status}") + return response.data + async def get_image_base64(url: str) -> str: # sourcery skip: raise-specific-error """获取图片/表情包的Base64""" logger.debug(f"下载图片: {url}") - http = SSLAdapter() try: - response = http.request("GET", url, timeout=10) - if response.status != 200: - raise Exception(f"HTTP Error: {response.status}") - image_bytes = response.data + image_bytes = await asyncio.to_thread(_blocking_download, url) return base64.b64encode(image_bytes).decode("utf-8") except Exception as e: logger.error(f"图片下载失败: {str(e)}")