mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
refactor(channels): share prefixed target parsing
This commit is contained in:
@@ -67,6 +67,23 @@ export function parseTargetPrefix(params: {
|
||||
return id ? buildMessagingTarget(params.kind, id, params.raw) : undefined;
|
||||
}
|
||||
|
||||
export function parseTargetPrefixes(params: {
|
||||
raw: string;
|
||||
prefixes: Array<{ prefix: string; kind: MessagingTargetKind }>;
|
||||
}): MessagingTarget | undefined {
|
||||
for (const entry of params.prefixes) {
|
||||
const parsed = parseTargetPrefix({
|
||||
raw: params.raw,
|
||||
prefix: entry.prefix,
|
||||
kind: entry.kind,
|
||||
});
|
||||
if (parsed) {
|
||||
return parsed;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export function requireTargetKind(params: {
|
||||
platform: string;
|
||||
target: MessagingTarget | undefined;
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
buildMessagingTarget,
|
||||
ensureTargetId,
|
||||
parseTargetMention,
|
||||
parseTargetPrefix,
|
||||
parseTargetPrefixes,
|
||||
requireTargetKind,
|
||||
type MessagingTarget,
|
||||
type MessagingTargetKind,
|
||||
@@ -33,22 +33,14 @@ export function parseDiscordTarget(
|
||||
if (mentionTarget) {
|
||||
return mentionTarget;
|
||||
}
|
||||
const prefixedTarget =
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "user:",
|
||||
kind: "user",
|
||||
}) ??
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "channel:",
|
||||
kind: "channel",
|
||||
}) ??
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "discord:",
|
||||
kind: "user",
|
||||
});
|
||||
const prefixedTarget = parseTargetPrefixes({
|
||||
raw: trimmed,
|
||||
prefixes: [
|
||||
{ prefix: "user:", kind: "user" },
|
||||
{ prefix: "channel:", kind: "channel" },
|
||||
{ prefix: "discord:", kind: "user" },
|
||||
],
|
||||
});
|
||||
if (prefixedTarget) {
|
||||
return prefixedTarget;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import {
|
||||
buildMessagingTarget,
|
||||
ensureTargetId,
|
||||
parseTargetMention,
|
||||
parseTargetPrefix,
|
||||
parseTargetPrefixes,
|
||||
requireTargetKind,
|
||||
type MessagingTarget,
|
||||
type MessagingTargetKind,
|
||||
@@ -31,22 +31,14 @@ export function parseSlackTarget(
|
||||
if (mentionTarget) {
|
||||
return mentionTarget;
|
||||
}
|
||||
const prefixedTarget =
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "user:",
|
||||
kind: "user",
|
||||
}) ??
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "channel:",
|
||||
kind: "channel",
|
||||
}) ??
|
||||
parseTargetPrefix({
|
||||
raw: trimmed,
|
||||
prefix: "slack:",
|
||||
kind: "user",
|
||||
});
|
||||
const prefixedTarget = parseTargetPrefixes({
|
||||
raw: trimmed,
|
||||
prefixes: [
|
||||
{ prefix: "user:", kind: "user" },
|
||||
{ prefix: "channel:", kind: "channel" },
|
||||
{ prefix: "slack:", kind: "user" },
|
||||
],
|
||||
});
|
||||
if (prefixedTarget) {
|
||||
return prefixedTarget;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user