Compare commits

...

8 Commits

View File

@ -8,7 +8,8 @@ import nonebot
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.adapters import Bot, Event, Message from nonebot.adapters import Bot, Event, Message
from nonebot.adapters.discord import Bot as DiscordBot from nonebot.adapters.discord import Bot as DiscordBot
from nonebot.adapters.discord import GuildMessageCreateEvent as DiscordMessageEvent 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 Bot as OnebotV11Bot
from nonebot.adapters.onebot.v11 import Message as OnebotV11Message from nonebot.adapters.onebot.v11 import Message as OnebotV11Message
from nonebot.adapters.onebot.v11 import MessageEvent as OnebotV11MessageEvent from nonebot.adapters.onebot.v11 import MessageEvent as OnebotV11MessageEvent
@ -18,11 +19,14 @@ from PIL import UnidentifiedImageError
from returns.result import Failure, Result, Success 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: # if "/matcha/cache/" in url:
# url = url.replace('127.0.0.1', '10.126.126.101') # url = url.replace('127.0.0.1', '10.126.126.101')
logger.debug(f"开始从 {url} 下载图片") logger.debug(f"开始从 {url} 下载图片")
async with httpx.AsyncClient() as c: async with httpx.AsyncClient(proxy=proxy) as c:
try: try:
response = await c.get(url) response = await c.get(url)
except (httpx.ConnectError, httpx.RemoteProtocolError) as e: except (httpx.ConnectError, httpx.RemoteProtocolError) as e:
@ -127,8 +131,8 @@ async def extract_image_from_message(
for a in evt.attachments: for a in evt.attachments:
if "image/" not in a.content_type: if "image/" not in a.content_type:
continue continue
url = a.url 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): for seg in UniMessage.of(msg, bot):
logger.info(seg) logger.info(seg)