





















@@ -1,5 +1,9 @@
11import { describe, expect, it } from "vitest";
2-import { createSlackBoltApp, resolveSlackBoltInterop } from "./provider-support.js";
2+import {
3+createSlackBoltApp,
4+resolveSlackBoltInterop,
5+shouldSkipOpenClawSlackSelfEvent,
6+} from "./provider-support.js";
3748describe("resolveSlackBoltInterop", () => {
59function FakeApp() {}
@@ -107,10 +111,16 @@ describe("resolveSlackBoltInterop", () => {
107111describe("createSlackBoltApp", () => {
108112class FakeApp {
109113args: Record<string, unknown>;
114+middleware: unknown[] = [];
110115111116constructor(args: Record<string, unknown>) {
112117this.args = args;
113118}
119+120+use(middleware: unknown) {
121+this.middleware.push(middleware);
122+return this;
123+}
114124}
115125116126class FakeHTTPReceiver {
@@ -159,6 +169,7 @@ describe("createSlackBoltApp", () => {
159169 clientOptions,
160170ignoreSelf: false,
161171});
172+expect((app as unknown as FakeApp).middleware).toHaveLength(1);
162173});
163174164175it("uses HTTPReceiver for webhook mode", () => {
@@ -188,5 +199,37 @@ describe("createSlackBoltApp", () => {
188199 clientOptions,
189200ignoreSelf: false,
190201});
202+expect((app as unknown as FakeApp).middleware).toHaveLength(1);
203+});
204+205+it("keeps Bolt self filtering except assistant message_changed events", () => {
206+expect(
207+shouldSkipOpenClawSlackSelfEvent({
208+context: { botUserId: "U_BOT", botId: "B_BOT" },
209+event: { type: "reaction_added", user: "U_BOT" },
210+}),
211+).toBe(true);
212+213+expect(
214+shouldSkipOpenClawSlackSelfEvent({
215+context: { botUserId: "U_BOT", botId: "B_BOT" },
216+event: { type: "message", subtype: "message_changed", user: "U_BOT" },
217+}),
218+).toBe(false);
219+220+expect(
221+shouldSkipOpenClawSlackSelfEvent({
222+context: { botUserId: "U_BOT", botId: "B_BOT" },
223+event: { type: "message", user: "U_BOT" },
224+}),
225+).toBe(true);
226+227+expect(
228+shouldSkipOpenClawSlackSelfEvent({
229+context: { botUserId: "U_BOT", botId: "B_BOT" },
230+event: { type: "message", user: "U_OTHER" },
231+message: { subtype: "bot_message", bot_id: "B_BOT" },
232+}),
233+).toBe(true);
191234});
192235});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。