Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import {
deriveLastRoutePolicy,
resolveAgentRoute,
type ResolvedAgentRoute,
type RoutePeer,
} from "openclaw/plugin-sdk/routing";
import { resolveAgentIdFromSessionKey } from "openclaw/plugin-sdk/routing";
export function buildDiscordRoutePeer(params: {
isDirectMessage: boolean;
isGroupDm: boolean;
directUserId?: string | null;
conversationId: string;
}): RoutePeer {
return {
kind: params.isDirectMessage ? "direct" : params.isGroupDm ? "group" : "channel",
id: params.isDirectMessage
? params.directUserId?.trim() || params.conversationId
: params.conversationId,
};
}
export function resolveDiscordConversationRoute(params: {
cfg: OpenClawConfig;
accountId?: string | null;
guildId?: string | null;
memberRoleIds?: string[];
peer: RoutePeer;
parentConversationId?: string | null;
}): ResolvedAgentRoute {
return resolveAgentRoute({
cfg: params.cfg,
channel: "discord",
accountId: params.accountId,
guildId: params.guildId ?? undefined,
memberRoleIds: params.memberRoleIds,
peer: params.peer,
parentPeer: params.parentConversationId
? { kind: "channel", id: params.parentConversationId }
: undefined,
});
}
export function resolveDiscordBoundConversationRoute(params: {
cfg: OpenClawConfig;
accountId?: string | null;
guildId?: string | null;
memberRoleIds?: string[];
isDirectMessage: boolean;
isGroupDm: boolean;
directUserId?: string | null;
conversationId: string;
parentConversationId?: string | null;
boundSessionKey?: string | null;
configuredRoute?: { route: ResolvedAgentRoute } | null;
matchedBy?: ResolvedAgentRoute["matchedBy"];
}): ResolvedAgentRoute {
const route = resolveDiscordConversationRoute({
cfg: params.cfg,
accountId: params.accountId,
guildId: params.guildId,
memberRoleIds: params.memberRoleIds,
peer: buildDiscordRoutePeer({
isDirectMessage: params.isDirectMessage,
isGroupDm: params.isGroupDm,
directUserId: params.directUserId,
conversationId: params.conversationId,
}),
parentConversationId: params.parentConversationId,
});
return resolveDiscordEffectiveRoute({
route,
boundSessionKey: params.boundSessionKey,
configuredRoute: params.configuredRoute,
matchedBy: params.matchedBy,
});
}
export function resolveDiscordEffectiveRoute(params: {
route: ResolvedAgentRoute;
boundSessionKey?: string | null;
configuredRoute?: { route: ResolvedAgentRoute } | null;
matchedBy?: ResolvedAgentRoute["matchedBy"];
}): ResolvedAgentRoute {
const boundSessionKey = params.boundSessionKey?.trim();
if (!boundSessionKey) {
return params.configuredRoute?.route ?? params.route;
}
return {
...params.route,
sessionKey: boundSessionKey,
agentId: resolveAgentIdFromSessionKey(boundSessionKey),
lastRoutePolicy: deriveLastRoutePolicy({
sessionKey: boundSessionKey,
mainSessionKey: params.route.mainSessionKey,
}),
...(params.matchedBy ? { matchedBy: params.matchedBy } : {}),
};
}
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland