fix(slack): correct typed message event overloads (#31701)

This commit is contained in:
Peter Steinberger
2026-03-02 13:43:04 +00:00
parent 706293683d
commit 3bc36cef7d
2 changed files with 34 additions and 6 deletions

View File

@@ -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);
});
});

View File

@@ -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 {