mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 20:14:30 +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;
|
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: {
|
export function requireTargetKind(params: {
|
||||||
platform: string;
|
platform: string;
|
||||||
target: MessagingTarget | undefined;
|
target: MessagingTarget | undefined;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
buildMessagingTarget,
|
buildMessagingTarget,
|
||||||
ensureTargetId,
|
ensureTargetId,
|
||||||
parseTargetMention,
|
parseTargetMention,
|
||||||
parseTargetPrefix,
|
parseTargetPrefixes,
|
||||||
requireTargetKind,
|
requireTargetKind,
|
||||||
type MessagingTarget,
|
type MessagingTarget,
|
||||||
type MessagingTargetKind,
|
type MessagingTargetKind,
|
||||||
@@ -33,22 +33,14 @@ export function parseDiscordTarget(
|
|||||||
if (mentionTarget) {
|
if (mentionTarget) {
|
||||||
return mentionTarget;
|
return mentionTarget;
|
||||||
}
|
}
|
||||||
const prefixedTarget =
|
const prefixedTarget = parseTargetPrefixes({
|
||||||
parseTargetPrefix({
|
raw: trimmed,
|
||||||
raw: trimmed,
|
prefixes: [
|
||||||
prefix: "user:",
|
{ prefix: "user:", kind: "user" },
|
||||||
kind: "user",
|
{ prefix: "channel:", kind: "channel" },
|
||||||
}) ??
|
{ prefix: "discord:", kind: "user" },
|
||||||
parseTargetPrefix({
|
],
|
||||||
raw: trimmed,
|
});
|
||||||
prefix: "channel:",
|
|
||||||
kind: "channel",
|
|
||||||
}) ??
|
|
||||||
parseTargetPrefix({
|
|
||||||
raw: trimmed,
|
|
||||||
prefix: "discord:",
|
|
||||||
kind: "user",
|
|
||||||
});
|
|
||||||
if (prefixedTarget) {
|
if (prefixedTarget) {
|
||||||
return prefixedTarget;
|
return prefixedTarget;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import {
|
|||||||
buildMessagingTarget,
|
buildMessagingTarget,
|
||||||
ensureTargetId,
|
ensureTargetId,
|
||||||
parseTargetMention,
|
parseTargetMention,
|
||||||
parseTargetPrefix,
|
parseTargetPrefixes,
|
||||||
requireTargetKind,
|
requireTargetKind,
|
||||||
type MessagingTarget,
|
type MessagingTarget,
|
||||||
type MessagingTargetKind,
|
type MessagingTargetKind,
|
||||||
@@ -31,22 +31,14 @@ export function parseSlackTarget(
|
|||||||
if (mentionTarget) {
|
if (mentionTarget) {
|
||||||
return mentionTarget;
|
return mentionTarget;
|
||||||
}
|
}
|
||||||
const prefixedTarget =
|
const prefixedTarget = parseTargetPrefixes({
|
||||||
parseTargetPrefix({
|
raw: trimmed,
|
||||||
raw: trimmed,
|
prefixes: [
|
||||||
prefix: "user:",
|
{ prefix: "user:", kind: "user" },
|
||||||
kind: "user",
|
{ prefix: "channel:", kind: "channel" },
|
||||||
}) ??
|
{ prefix: "slack:", kind: "user" },
|
||||||
parseTargetPrefix({
|
],
|
||||||
raw: trimmed,
|
});
|
||||||
prefix: "channel:",
|
|
||||||
kind: "channel",
|
|
||||||
}) ??
|
|
||||||
parseTargetPrefix({
|
|
||||||
raw: trimmed,
|
|
||||||
prefix: "slack:",
|
|
||||||
kind: "user",
|
|
||||||
});
|
|
||||||
if (prefixedTarget) {
|
if (prefixedTarget) {
|
||||||
return prefixedTarget;
|
return prefixedTarget;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user