diff --git a/konabot/common/nb/extract_image.py b/konabot/common/nb/extract_image.py index 67e8592..6dfa856 100644 --- a/konabot/common/nb/extract_image.py +++ b/konabot/common/nb/extract_image.py @@ -9,6 +9,7 @@ from nonebot.matcher import Matcher from nonebot.adapters import Bot, Event, Message from nonebot.adapters.discord import Bot as DiscordBot from nonebot.adapters.discord import MessageEvent as DiscordMessageEvent +from nonebot.adapters.discord.config import Config as DiscordConfig from nonebot.adapters.onebot.v11 import Bot as OnebotV11Bot from nonebot.adapters.onebot.v11 import Message as OnebotV11Message from nonebot.adapters.onebot.v11 import MessageEvent as OnebotV11MessageEvent @@ -18,11 +19,14 @@ from PIL import UnidentifiedImageError from returns.result import Failure, Result, Success -async def download_image_bytes(url: str) -> Result[bytes, str]: +discordConfig = nonebot.get_plugin_config(DiscordConfig) + + +async def download_image_bytes(url: str, proxy: str | None = None) -> Result[bytes, str]: # if "/matcha/cache/" in url: # url = url.replace('127.0.0.1', '10.126.126.101') logger.debug(f"开始从 {url} 下载图片") - async with httpx.AsyncClient() as c: + async with httpx.AsyncClient(proxy=proxy) as c: try: response = await c.get(url) except (httpx.ConnectError, httpx.RemoteProtocolError) as e: @@ -128,7 +132,7 @@ async def extract_image_from_message( if "image/" not in a.content_type: continue url = a.proxy_url - return (await download_image_bytes(url)).bind(bytes_to_pil) + return (await download_image_bytes(url, discordConfig.discord_proxy)).bind(bytes_to_pil) for seg in UniMessage.of(msg, bot): logger.info(seg)