From 411494faa86b6280f3da2c5bc7e7a3089b875205 Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 27 Mar 2026 23:33:48 -0500 Subject: [PATCH] fix(regression): guard malformed telegram reaction payloads --- extensions/telegram/src/status-reaction-variants.ts | 3 +++ extensions/telegram/src/status.test.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/extensions/telegram/src/status-reaction-variants.ts b/extensions/telegram/src/status-reaction-variants.ts index 89b10691d81..5362451ab5d 100644 --- a/extensions/telegram/src/status-reaction-variants.ts +++ b/extensions/telegram/src/status-reaction-variants.ts @@ -170,6 +170,9 @@ export function extractTelegramAllowedEmojiReactions( // Explicitly omitted/null => all emoji reactions are allowed in this chat. return null; } + if (!Array.isArray(availableReactions)) { + return new Set(); + } const allowed = new Set(); for (const reaction of availableReactions) { diff --git a/extensions/telegram/src/status.test.ts b/extensions/telegram/src/status.test.ts index 38261182597..d5b32750392 100644 --- a/extensions/telegram/src/status.test.ts +++ b/extensions/telegram/src/status.test.ts @@ -157,6 +157,14 @@ describe("extractTelegramAllowedEmojiReactions", () => { }); expect(result ? Array.from(result).toSorted() : null).toEqual(["👍", "🔥"]); }); + + it("treats malformed available_reactions payloads as an empty allowlist instead of throwing", () => { + expect( + extractTelegramAllowedEmojiReactions({ + available_reactions: { type: "emoji", emoji: "👍" }, + } as never), + ).toEqual(new Set()); + }); }); describe("resolveTelegramAllowedEmojiReactions", () => {