OpenClawBot / src /web /auto-reply /mentions.test.ts
darkfire514's picture
Upload 2526 files
fb4d8fe verified
import { describe, expect, it } from "vitest";
import type { WebInboundMsg } from "./types.js";
import { isBotMentionedFromTargets, resolveMentionTargets } from "./mentions.js";
const makeMsg = (overrides: Partial<WebInboundMsg>): WebInboundMsg =>
({
id: "m1",
from: "120363401234567890@g.us",
conversationId: "120363401234567890@g.us",
to: "15551234567@s.whatsapp.net",
accountId: "default",
body: "",
chatType: "group",
chatId: "120363401234567890@g.us",
sendComposing: async () => {},
reply: async () => {},
sendMedia: async () => {},
...overrides,
}) as WebInboundMsg;
describe("isBotMentionedFromTargets", () => {
const mentionCfg = { mentionRegexes: [/\bopenclaw\b/i] };
it("ignores regex matches when other mentions are present", () => {
const msg = makeMsg({
body: "@OpenClaw please help",
mentionedJids: ["19998887777@s.whatsapp.net"],
selfE164: "+15551234567",
selfJid: "15551234567@s.whatsapp.net",
});
const targets = resolveMentionTargets(msg);
expect(isBotMentionedFromTargets(msg, mentionCfg, targets)).toBe(false);
});
it("matches explicit self mentions", () => {
const msg = makeMsg({
body: "hey",
mentionedJids: ["15551234567@s.whatsapp.net"],
selfE164: "+15551234567",
selfJid: "15551234567@s.whatsapp.net",
});
const targets = resolveMentionTargets(msg);
expect(isBotMentionedFromTargets(msg, mentionCfg, targets)).toBe(true);
});
it("falls back to regex when no mentions are present", () => {
const msg = makeMsg({
body: "openclaw can you help?",
selfE164: "+15551234567",
selfJid: "15551234567@s.whatsapp.net",
});
const targets = resolveMentionTargets(msg);
expect(isBotMentionedFromTargets(msg, mentionCfg, targets)).toBe(true);
});
});