From 78722d0b4fda661152452e11010821f99ce9474f Mon Sep 17 00:00:00 2001 From: Lukin Date: Wed, 28 Jan 2026 02:17:13 +0800 Subject: [PATCH] fix(telegram): add video_note support to Telegram channel - Add msg.video_note to media extraction chain in bot/delivery.ts - Add placeholder detection for video notes in bot-message-context.ts - Video notes (rounded square video messages) are now processed and downloaded like regular videos Fixes issue where video note messages were silently dropped because they weren't in the media handling logic. --- src/telegram/bot-message-context.ts | 1 + src/telegram/bot/delivery.ts | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/telegram/bot-message-context.ts b/src/telegram/bot-message-context.ts index 832a4413dc4..abd06cdefd7 100644 --- a/src/telegram/bot-message-context.ts +++ b/src/telegram/bot-message-context.ts @@ -335,6 +335,7 @@ export const buildTelegramMessageContext = async ({ let placeholder = ""; if (msg.photo) placeholder = ""; else if (msg.video) placeholder = ""; + else if (msg.video_note) placeholder = ""; else if (msg.audio || msg.voice) placeholder = ""; else if (msg.document) placeholder = ""; else if (msg.sticker) placeholder = ""; diff --git a/src/telegram/bot/delivery.ts b/src/telegram/bot/delivery.ts index c6d731d2e72..8c1e74b7391 100644 --- a/src/telegram/bot/delivery.ts +++ b/src/telegram/bot/delivery.ts @@ -368,7 +368,12 @@ export async function resolveMedia( } const m = - msg.photo?.[msg.photo.length - 1] ?? msg.video ?? msg.document ?? msg.audio ?? msg.voice; + msg.photo?.[msg.photo.length - 1] ?? + msg.video ?? + msg.video_note ?? + msg.document ?? + msg.audio ?? + msg.voice; if (!m?.file_id) return null; const file = await ctx.getFile(); if (!file.file_path) { @@ -395,6 +400,7 @@ export async function resolveMedia( let placeholder = ""; if (msg.photo) placeholder = ""; else if (msg.video) placeholder = ""; + else if (msg.video_note) placeholder = ""; else if (msg.audio || msg.voice) placeholder = ""; return { path: saved.path, contentType: saved.contentType, placeholder }; }