openclaw/extensions/telegram/src/threading-tool-context.ts

35 lines
1.1 KiB
TypeScript

import type {
ChannelThreadingContext,
ChannelThreadingToolContext,
} from "openclaw/plugin-sdk/channel-contract";
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-runtime";
import { parseTelegramTarget } from "./targets.js";
function resolveTelegramToolContextThreadId(context: ChannelThreadingContext): string | undefined {
if (context.MessageThreadId != null) {
return String(context.MessageThreadId);
}
const currentChannelId = context.To?.trim();
if (!currentChannelId) {
return undefined;
}
const parsedTarget = parseTelegramTarget(currentChannelId);
return parsedTarget.messageThreadId != null ? String(parsedTarget.messageThreadId) : undefined;
}
export function buildTelegramThreadingToolContext(params: {
cfg: OpenClawConfig;
accountId?: string | null;
context: ChannelThreadingContext;
hasRepliedRef?: { value: boolean };
}): ChannelThreadingToolContext {
void params.cfg;
void params.accountId;
return {
currentChannelId: params.context.To?.trim() || undefined,
currentThreadTs: resolveTelegramToolContextThreadId(params.context),
hasRepliedRef: params.hasRepliedRef,
};
}