From 0ec1b9f7fa3a3e4d145a367b0e03080d02e7dd20 Mon Sep 17 00:00:00 2001 From: andy Date: Sun, 26 Jul 2026 09:50:37 +0800 Subject: [PATCH] fix(gateway,tools): add missing .3gp and .webm to video extension sets MEDIA_DELIVERY_EXTS in gateway/platforms/base.py omitted .3gp, causing MEDIA: tags with .3gp files to leak as plain text instead of being extracted for native video delivery. _VIDEO_EXTS in tools/send_message_tool.py and _MIGRATION_VIDEO_EXTS in the Feishu adapter omitted .webm, causing .webm files to be classified as documents instead of video on Telegram and other platforms. Both extensions are already present in every gateway-side _VIDEO_EXTS definition (run.py, kanban_watchers.py, weixin.py, base.py local). Closes #71621, Closes #71603 --- gateway/platforms/base.py | 2 +- plugins/platforms/feishu/adapter.py | 2 +- tools/send_message_tool.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gateway/platforms/base.py b/gateway/platforms/base.py index 708a8b62367e..2568d4749774 100644 --- a/gateway/platforms/base.py +++ b/gateway/platforms/base.py @@ -1478,7 +1478,7 @@ MEDIA_DELIVERY_EXTS: Tuple[str, ...] = ( # Images (embed inline) ".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp", ".tiff", ".svg", # Video (embed inline where supported) - ".mp4", ".mov", ".avi", ".mkv", ".webm", + ".mp4", ".mov", ".avi", ".mkv", ".webm", ".3gp", # Audio (delivered as voice/audio where supported) ".mp3", ".wav", ".ogg", ".opus", ".m4a", ".flac", # Documents (uploaded as file attachments) diff --git a/plugins/platforms/feishu/adapter.py b/plugins/platforms/feishu/adapter.py index e1df2a05e5e5..751c2bf76dfd 100644 --- a/plugins/platforms/feishu/adapter.py +++ b/plugins/platforms/feishu/adapter.py @@ -5447,7 +5447,7 @@ def _qr_register_inner( # ────────────────────────────────────────────────────────────────────────── _MIGRATION_IMAGE_EXTS = {".jpg", ".jpeg", ".png", ".webp", ".gif"} -_MIGRATION_VIDEO_EXTS = {".mp4", ".mov", ".avi", ".mkv", ".3gp"} +_MIGRATION_VIDEO_EXTS = {".mp4", ".mov", ".avi", ".mkv", ".webm", ".3gp"} _MIGRATION_AUDIO_EXTS = {".ogg", ".opus", ".mp3", ".wav", ".m4a", ".flac"} _MIGRATION_VOICE_EXTS = {".ogg", ".opus"} diff --git a/tools/send_message_tool.py b/tools/send_message_tool.py index 9c1d41eaf0fd..809a522f67b3 100644 --- a/tools/send_message_tool.py +++ b/tools/send_message_tool.py @@ -62,7 +62,7 @@ _EMAIL_TARGET_RE = re.compile(r"^\s*[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2 # never read. Map the exceptions so the error guidance is actually actionable. _HOME_CHANNEL_ENV_OVERRIDES = {"email": "EMAIL_HOME_ADDRESS"} _IMAGE_EXTS = {".jpg", ".jpeg", ".png", ".webp", ".gif"} -_VIDEO_EXTS = {".mp4", ".mov", ".avi", ".mkv", ".3gp"} +_VIDEO_EXTS = {".mp4", ".mov", ".avi", ".mkv", ".webm", ".3gp"} _AUDIO_EXTS = {".ogg", ".opus", ".mp3", ".wav", ".m4a", ".flac"} _VOICE_EXTS = {".ogg", ".opus"} # Telegram's Bot API sendAudio only accepts MP3 / M4A. Other audio