自动同步: 2026-07-01 02:10
This commit is contained in:
Generated
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
||||
//#region extensions/feishu/src/targets.ts
|
||||
const CHAT_ID_PREFIX = "oc_";
|
||||
const OPEN_ID_PREFIX = "ou_";
|
||||
const USER_ID_REGEX = /^[a-zA-Z0-9_-]+$/;
|
||||
function stripProviderPrefix(raw) {
|
||||
return raw.replace(/^(feishu|lark):/i, "").trim();
|
||||
}
|
||||
function detectIdType(id) {
|
||||
const trimmed = id.trim();
|
||||
if (trimmed.startsWith(CHAT_ID_PREFIX)) return "chat_id";
|
||||
if (trimmed.startsWith(OPEN_ID_PREFIX)) return "open_id";
|
||||
if (USER_ID_REGEX.test(trimmed)) return "user_id";
|
||||
return null;
|
||||
}
|
||||
function normalizeFeishuTarget(raw) {
|
||||
const trimmed = raw.trim();
|
||||
if (!trimmed) return null;
|
||||
const withoutProvider = stripProviderPrefix(trimmed);
|
||||
const lowered = normalizeLowercaseStringOrEmpty(withoutProvider);
|
||||
if (lowered.startsWith("chat:")) return withoutProvider.slice(5).trim() || null;
|
||||
if (lowered.startsWith("group:")) return withoutProvider.slice(6).trim() || null;
|
||||
if (lowered.startsWith("channel:")) return withoutProvider.slice(8).trim() || null;
|
||||
if (lowered.startsWith("user:")) return withoutProvider.slice(5).trim() || null;
|
||||
if (lowered.startsWith("dm:")) return withoutProvider.slice(3).trim() || null;
|
||||
if (lowered.startsWith("open_id:")) return withoutProvider.slice(8).trim() || null;
|
||||
return withoutProvider;
|
||||
}
|
||||
function resolveReceiveIdType(id) {
|
||||
const trimmed = id.trim();
|
||||
const lowered = normalizeLowercaseStringOrEmpty(trimmed);
|
||||
if (lowered.startsWith("chat:") || lowered.startsWith("group:") || lowered.startsWith("channel:")) return "chat_id";
|
||||
if (lowered.startsWith("open_id:")) return "open_id";
|
||||
if (lowered.startsWith("user:") || lowered.startsWith("dm:")) return trimmed.replace(/^(user|dm):/i, "").trim().startsWith(OPEN_ID_PREFIX) ? "open_id" : "user_id";
|
||||
if (trimmed.startsWith(CHAT_ID_PREFIX)) return "chat_id";
|
||||
if (trimmed.startsWith(OPEN_ID_PREFIX)) return "open_id";
|
||||
return "user_id";
|
||||
}
|
||||
function looksLikeFeishuId(raw) {
|
||||
const trimmed = stripProviderPrefix(raw.trim());
|
||||
if (!trimmed) return false;
|
||||
if (/^(chat|group|channel|user|dm|open_id):/i.test(trimmed)) return true;
|
||||
if (trimmed.startsWith(CHAT_ID_PREFIX)) return true;
|
||||
if (trimmed.startsWith(OPEN_ID_PREFIX)) return true;
|
||||
return false;
|
||||
}
|
||||
//#endregion
|
||||
export { resolveReceiveIdType as i, looksLikeFeishuId as n, normalizeFeishuTarget as r, detectIdType as t };
|
||||
Reference in New Issue
Block a user