Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 26 additions & 7 deletions astrbot/core/platform/sources/discord/discord_platform_event.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import asyncio
from collections.abc import AsyncGenerator
from io import BytesIO
from ipaddress import ip_address
from pathlib import Path
from typing import cast
from urllib.parse import urlparse

import discord
from discord.types.interactions import ComponentInteractionData
Expand Down Expand Up @@ -163,13 +165,30 @@ async def _parse_to_discord(
continue

if file_content.startswith("http"):
logger.debug(
"[Discord] 处理 URL 图片: %s",
describe_media_ref(file_content),
)
embed = discord.Embed().set_image(url=file_content)
embeds.append(embed)
continue
host = None
try:
host = urlparse(file_content).hostname
except ValueError:
pass
is_unreachable = False
if host:
if host == "localhost":
is_unreachable = True
else:
try:
is_unreachable = ip_address(
host.strip("[]")
).is_loopback
except ValueError:
pass
if not is_unreachable:
logger.debug(
"[Discord] 处理 URL 图片: %s",
describe_media_ref(file_content),
)
embed = discord.Embed().set_image(url=file_content)
embeds.append(embed)
continue

image_data = await MediaResolver(
file_content,
Expand Down
Loading