fix(notifications): fix telegram shoutrrr URL encoding

Closes #690
This commit is contained in:
Nicolas Meienberger 2026-03-21 18:41:52 +01:00
parent aa23967329
commit df0d9da4a3
2 changed files with 9 additions and 8 deletions

View file

@ -182,19 +182,19 @@ describe("notification shoutrrr URL builders", () => {
expect(
buildTelegramShoutrrrUrl({
type: "telegram",
botToken: "bot-token",
botToken: "123456:ABCdef",
chatId: "chat-id",
}),
).toBe("telegram://bot-token@telegram?channels=chat-id");
).toBe("telegram://123456:ABCdef@telegram?channels=chat-id");
expect(
buildTelegramShoutrrrUrl({
type: "telegram",
botToken: "bot-token",
botToken: "123456:ABCdef",
chatId: "chat-id",
threadId: "thread-id",
}),
).toBe("telegram://bot-token@telegram?channels=chat-id%3Athread-id");
).toBe("telegram://123456:ABCdef@telegram?channels=chat-id:thread-id");
});
test("builds generic URLs with reserved params, transport flags, and headers", () => {

View file

@ -1,8 +1,9 @@
import type { NotificationConfig } from "~/schemas/notifications";
export const buildTelegramShoutrrrUrl = (config: Extract<NotificationConfig, { type: "telegram" }>) => {
const shoutrrrUrl = new URL("telegram://telegram");
shoutrrrUrl.username = config.botToken;
shoutrrrUrl.searchParams.set("channels", `${config.chatId}${config.threadId ? `:${config.threadId}` : ""}`);
return shoutrrrUrl.toString().replace("/?", "?");
let shoutrrrUrl = `telegram://${config.botToken}@telegram?channels=${config.chatId}`;
if (config.threadId) {
shoutrrrUrl += `:${config.threadId}`;
}
return shoutrrrUrl;
};