import {
buildMessagingTarget,
parseMentionPrefixOrAtUserTarget,
requireTargetKind,
type MessagingTarget,
type MessagingTargetKind,
type MessagingTargetParseOptions,
} from "openclaw/plugin-sdk/messaging-targets";
export type DiscordTargetKind = MessagingTargetKind;
export type DiscordTarget = MessagingTarget;
export type DiscordTargetParseOptions = MessagingTargetParseOptions;
export function parseDiscordTarget(
raw: string,
options: DiscordTargetParseOptions = {},
): DiscordTarget | undefined { const trimmed = raw.trim(); if (!trimmed) { return undefined;
} const userTarget = parseMentionPrefixOrAtUserTarget({
raw: trimmed,
mentionPattern: /^<@!?(\d+)>$/,
prefixes: [
{ prefix: "user:", kind: "user" },
{ prefix: "channel:", kind: "channel" },
{ prefix: "discord:", kind: "user" },
],
atUserPattern: /^\d+$/,
atUserErrorMessage: "Discord DMs require a user id (use user:<id> or a <@id> mention)",
}); if (userTarget) { return userTarget;
} if (/^\d+$/.test(trimmed)) { if (options.defaultKind) { return buildMessagingTarget(options.defaultKind, trimmed, trimmed);
} thrownew Error(
options.ambiguousMessage ??
`Ambiguous Discord recipient "${trimmed}". Use "user:${trimmed}"for DMs or "channel:${trimmed}"for channel messages.`,
);
} return buildMessagingTarget("channel", trimmed, trimmed);
}
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.