fix(cron): parse telegram targets with prefixes (thanks @mitschabaude-bot)

This commit is contained in:
Peter Steinberger
2026-01-08 21:20:59 +01:00
parent 2afb75d508
commit 5fea53d89c
3 changed files with 27 additions and 1 deletions

View File

@@ -716,4 +716,20 @@ describe("parseTelegramTarget", () => {
topicId: undefined,
});
});
it("strips internal telegram prefix", () => {
expect(parseTelegramTarget("telegram:123")).toEqual({
chatId: "123",
topicId: undefined,
});
});
it("strips internal telegram + group prefixes before parsing topic", () => {
expect(parseTelegramTarget("telegram:group:-1001234567890:topic:456")).toEqual(
{
chatId: "-1001234567890",
topicId: 456,
},
);
});
});

View File

@@ -61,7 +61,16 @@ export function parseTelegramTarget(to: string): {
chatId: string;
topicId: number | undefined;
} {
const trimmed = to.trim();
let trimmed = to.trim();
// Cron "lastTo" values can include internal prefixes like `telegram:...` or
// `telegram:group:...` (see normalizeChatId in telegram/send.ts).
// Strip these before parsing `:topic:` / `:<topicId>` suffixes.
while (true) {
const next = trimmed.replace(/^(telegram|tg|group):/i, "").trim();
if (next === trimmed) break;
trimmed = next;
}
// Try format: chatId:topic:topicId
const topicMatch = /^(.+?):topic:(\d+)$/.exec(trimmed);