




















@@ -20,6 +20,27 @@ import {
2020resolveTelegramDirectPeerId,
2121} from "./bot/helpers.js";
222223+type TelegramResolvedRoute = ReturnType<typeof resolveAgentRoute>;
24+type ConfiguredTelegramBinding = NonNullable<ConfiguredBindingRouteResult["bindingResolution"]>;
25+26+export type TelegramConversationBindingMode =
27+| { kind: "none" }
28+| {
29+kind: "configured";
30+binding: ConfiguredTelegramBinding;
31+sessionKey: string;
32+}
33+| {
34+kind: "runtime-bound";
35+sessionKey: string;
36+}
37+| { kind: "plugin-owned-runtime" };
38+39+export type TelegramConversationRouteResult = {
40+route: TelegramResolvedRoute;
41+bindingMode: TelegramConversationBindingMode;
42+};
43+2344export function resolveTelegramConversationRoute(params: {
2445cfg: OpenClawConfig;
2546accountId: string;
@@ -29,12 +50,7 @@ export function resolveTelegramConversationRoute(params: {
2950replyThreadId?: number;
3051senderId?: string | number | null;
3152topicAgentId?: string | null;
32-}): {
33-route: ReturnType<typeof resolveAgentRoute>;
34-configuredBinding: ConfiguredBindingRouteResult["bindingResolution"];
35-configuredBindingSessionKey: string;
36-pluginOwnedRuntimeBinding: boolean;
37-} {
53+}): TelegramConversationRouteResult {
3854const peerId = params.isGroup
3955 ? buildTelegramGroupPeerId(params.chatId, params.resolvedThreadId)
4056 : resolveTelegramDirectPeerId({
@@ -102,9 +118,14 @@ export function resolveTelegramConversationRoute(params: {
102118parentConversationId: params.isGroup ? String(params.chatId) : undefined,
103119},
104120});
105-let configuredBinding = configuredRoute.bindingResolution;
106-let configuredBindingSessionKey = configuredRoute.boundSessionKey ?? "";
107121route = configuredRoute.route;
122+let bindingMode: TelegramConversationBindingMode = configuredRoute.bindingResolution
123+ ? {
124+kind: "configured",
125+binding: configuredRoute.bindingResolution,
126+sessionKey: configuredRoute.boundSessionKey ?? route.sessionKey,
127+}
128+ : { kind: "none" };
108129109130const runtimeBindingConversationId =
110131params.replyThreadId != null
@@ -119,12 +140,10 @@ export function resolveTelegramConversationRoute(params: {
119140},
120141});
121142route = runtimeRoute.route;
122-const pluginOwnedRuntimeBinding = Boolean(
123-runtimeRoute.bindingRecord && !runtimeRoute.boundSessionKey,
124-);
125143if (runtimeRoute.bindingRecord) {
126-configuredBinding = null;
127-configuredBindingSessionKey = "";
144+bindingMode = runtimeRoute.boundSessionKey
145+ ? { kind: "runtime-bound", sessionKey: runtimeRoute.boundSessionKey }
146+ : { kind: "plugin-owned-runtime" };
128147logVerbose(
129148runtimeRoute.boundSessionKey
130149 ? `telegram: routed via bound conversation ${runtimeBindingConversationId} -> ${runtimeRoute.boundSessionKey}`
@@ -134,9 +153,7 @@ export function resolveTelegramConversationRoute(params: {
134153135154return {
136155 route,
137- configuredBinding,
138- configuredBindingSessionKey,
139- pluginOwnedRuntimeBinding,
156+ bindingMode,
140157};
141158}
142159此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。