import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/text-runtime";
export function normalizeMattermostMessagingTarget(raw: string): string | undefined { const trimmed = raw.trim(); if (!trimmed) { return undefined;
} const lower = normalizeLowercaseStringOrEmpty(trimmed); if (lower.startsWith("channel:")) { const id = trimmed.slice("channel:".length).trim(); return id ? `channel:${id}` : undefined;
} if (lower.startsWith("group:")) { const id = trimmed.slice("group:".length).trim(); return id ? `channel:${id}` : undefined;
} if (lower.startsWith("user:")) { const id = trimmed.slice("user:".length).trim(); return id ? `user:${id}` : undefined;
} if (lower.startsWith("mattermost:")) { const id = trimmed.slice("mattermost:".length).trim(); return id ? `user:${id}` : undefined;
} if (trimmed.startsWith("@")) { const id = trimmed.slice(1).trim(); return id ? `@${id}` : undefined;
} if (trimmed.startsWith("#")) { // Strip # prefix and fall through to directory lookup (same as bare names). // The core's resolveMessagingTarget will use the directory adapter to // resolve the channel name to its Mattermost ID. return undefined;
} // Bare name without prefix — return undefined to allow directory lookup return undefined;
}
export function looksLikeMattermostTargetId(raw: string, _normalized?: string): boolean { const trimmed = raw.trim(); if (!trimmed) { returnfalse;
} if (/^(user|channel|group|mattermost):/i.test(trimmed)) { returntrue;
} if (trimmed.startsWith("@")) { returntrue;
} // Mattermost IDs: 26-char alnum, or DM channels like "abc123__xyz789" (53 chars) return /^[a-z0-9]{26}$/i.test(trimmed) || /^[a-z0-9]{26}__[a-z0-9]{26}$/i.test(trimmed);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-06-07)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.