@gguf/claw
Version:
WhatsApp gateway CLI (Baileys web) with Pi RPC agent
49 lines (43 loc) • 1.32 kB
text/typescript
export type MentionableActivity = {
recipient?: { id?: string } | null;
entities?: Array<{
type?: string;
mentioned?: { id?: string };
}> | null;
};
export function normalizeMSTeamsConversationId(raw: string): string {
return raw.split(";")[0] ?? raw;
}
export function extractMSTeamsConversationMessageId(raw: string): string | undefined {
if (!raw) {
return undefined;
}
const match = /(?:^|;)messageid=([^;]+)/i.exec(raw);
const value = match?.[1]?.trim() ?? "";
return value || undefined;
}
export function parseMSTeamsActivityTimestamp(value: unknown): Date | undefined {
if (!value) {
return undefined;
}
if (value instanceof Date) {
return value;
}
if (typeof value !== "string") {
return undefined;
}
const date = new Date(value);
return Number.isNaN(date.getTime()) ? undefined : date;
}
export function stripMSTeamsMentionTags(text: string): string {
// Teams wraps mentions in <at>...</at> tags
return text.replace(/<at[^>]*>.*?<\/at>/gi, "").trim();
}
export function wasMSTeamsBotMentioned(activity: MentionableActivity): boolean {
const botId = activity.recipient?.id;
if (!botId) {
return false;
}
const entities = activity.entities ?? [];
return entities.some((e) => e.type === "mention" && e.mentioned?.id === botId);
}