使用 Discord Proxy 选项来下载图片

This commit is contained in:
2025-11-06 00:12:08 +08:00
parent 650c500f47
commit 627a29f57e

View File

@ -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)