Merge pull request '使用 Discord Proxy 选项来下载图片' (#39) from bugfix/discord-image-download into master

Reviewed-on: mttu-developers/konabot#39
This commit is contained in:
2025-11-06 00:12:32 +08:00

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)