From d84d44643af901bc73b834a7230d4b83af1467cd Mon Sep 17 00:00:00 2001 From: Muhammed Mukhthar CM Date: Fri, 23 Jan 2026 10:04:10 +0000 Subject: [PATCH] Telegram-user: normalize group targets --- extensions/telegram-user/src/send.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions/telegram-user/src/send.ts b/extensions/telegram-user/src/send.ts index 9b26a8bab..a80491e71 100644 --- a/extensions/telegram-user/src/send.ts +++ b/extensions/telegram-user/src/send.ts @@ -30,10 +30,10 @@ export type TelegramUserSendOpts = { const normalizeTarget = (raw: string): string => { const trimmed = raw.trim(); if (!trimmed) throw new Error("Recipient is required for Telegram User sends"); - return trimmed - .replace(/^(telegram-user|telegram|tg):/i, "") - .replace(/^user:/i, "") - .trim(); + const withoutProvider = trimmed.replace(/^(telegram-user|telegram|tg):/i, "").trim(); + const withoutPrefix = withoutProvider.replace(/^(user|group|channel|chat):/i, "").trim(); + const topicSplit = withoutPrefix.split(/:topic:/i); + return (topicSplit[0] ?? withoutPrefix).trim(); }; export function normalizeTelegramUserMessagingTarget(raw: string): string { @@ -43,6 +43,8 @@ export function normalizeTelegramUserMessagingTarget(raw: string): string { export function looksLikeTelegramUserTargetId(value: string): boolean { const trimmed = value.trim(); if (!trimmed) return false; + if (/^telegram-user:/i.test(trimmed)) return true; + if (/^(user|group|channel|chat):/i.test(trimmed)) return true; return /^-?\d+$/.test(trimmed) || /^@?[a-z0-9_]{5,}$/i.test(trimmed); }