forked from mttu-developers/konabot
Merge pull request '使用 Discord Proxy 选项来下载图片' (#39) from bugfix/discord-image-download into master
Reviewed-on: mttu-developers/konabot#39
This commit is contained in:
@ -9,6 +9,7 @@ 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 MessageEvent 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:
|
||||||
@ -128,7 +132,7 @@ async def extract_image_from_message(
|
|||||||
if "image/" not in a.content_type:
|
if "image/" not in a.content_type:
|
||||||
continue
|
continue
|
||||||
url = a.proxy_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)
|
||||||
|
|||||||
Reference in New Issue
Block a user