From 8b653d8d2e1c7a4665cae21141ccc2d8b5a810e8 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 832a4413d..abd06cdef 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 c6d731d2e..8c1e74b73 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 }; }