From 3bc36cef7de7fb5cb82d7a7cf004a4c9e2a5d638 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 2 Mar 2026 13:43:04 +0000 Subject: [PATCH] fix(slack): correct typed message event overloads (#31701) --- src/slack/monitor/events/messages.test.ts | 22 ++++++++++++++++++++++ src/slack/monitor/events/messages.ts | 18 ++++++++++++------ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/slack/monitor/events/messages.test.ts b/src/slack/monitor/events/messages.test.ts index b59b26c1633..4b7cc40386d 100644 --- a/src/slack/monitor/events/messages.test.ts +++ b/src/slack/monitor/events/messages.test.ts @@ -192,4 +192,26 @@ describe("registerSlackMessageEvents", () => { expect(handleSlackMessage).toHaveBeenCalledTimes(2); expect(messageQueueMock).not.toHaveBeenCalled(); }); + + it("applies subtype system-event handling for message.channels events", async () => { + messageQueueMock.mockClear(); + messageAllowMock.mockReset().mockResolvedValue([]); + const { channelHandler, handleSlackMessage } = createMessageHandlers({ + dmPolicy: "open", + channelType: "channel", + }); + + expect(channelHandler).toBeTruthy(); + + await channelHandler!({ + event: { + ...makeChangedEvent({ channel: "C1", user: "U1" }), + channel_type: "channel", + }, + body: {}, + }); + + expect(handleSlackMessage).not.toHaveBeenCalled(); + expect(messageQueueMock).toHaveBeenCalledTimes(1); + }); }); diff --git a/src/slack/monitor/events/messages.ts b/src/slack/monitor/events/messages.ts index d63ce780d30..6891b18c3b9 100644 --- a/src/slack/monitor/events/messages.ts +++ b/src/slack/monitor/events/messages.ts @@ -102,12 +102,18 @@ export function registerSlackMessageEvents(params: { }); // Slack may dispatch channel/group message subscriptions under typed event // names. Register explicit handlers so both delivery styles are supported. - ctx.app.event("message.channels", async ({ event, body }: SlackEventMiddlewareArgs) => { - await handleIncomingMessageEvent({ event, body }); - }); - ctx.app.event("message.groups", async ({ event, body }: SlackEventMiddlewareArgs) => { - await handleIncomingMessageEvent({ event, body }); - }); + ctx.app.event( + "message.channels", + async ({ event, body }: SlackEventMiddlewareArgs<"message.channels">) => { + await handleIncomingMessageEvent({ event, body }); + }, + ); + ctx.app.event( + "message.groups", + async ({ event, body }: SlackEventMiddlewareArgs<"message.groups">) => { + await handleIncomingMessageEvent({ event, body }); + }, + ); ctx.app.event("app_mention", async ({ event, body }: SlackEventMiddlewareArgs<"app_mention">) => { try {