fix(cron): parse telegram targets with prefixes (thanks @mitschabaude-bot)
This commit is contained in:
@@ -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,
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user