Files
openclaw/extensions/telegram/src/auto-topic-label.ts
2026-04-03 19:09:20 +01:00

40 lines
1.3 KiB
TypeScript

import type {
OpenClawConfig,
TelegramAccountConfig,
TelegramDirectConfig,
} from "openclaw/plugin-sdk/config-runtime";
import { generateConversationLabel } from "openclaw/plugin-sdk/reply-runtime";
export const AUTO_TOPIC_LABEL_DEFAULT_PROMPT =
"Generate a very short topic label (2-4 words, max 25 chars) for a chat conversation based on the user's first message below. No emoji. Use the same language as the message. Be concise and descriptive. Return ONLY the topic name, nothing else.";
export function resolveAutoTopicLabelConfig(
directConfig?: TelegramDirectConfig["autoTopicLabel"],
accountConfig?: TelegramAccountConfig["autoTopicLabel"],
): { enabled: true; prompt: string } | null {
const config = directConfig ?? accountConfig;
if (config === undefined || config === true) {
return { enabled: true, prompt: AUTO_TOPIC_LABEL_DEFAULT_PROMPT };
}
if (config === false || config.enabled === false) {
return null;
}
return {
enabled: true,
prompt: config.prompt?.trim() || AUTO_TOPIC_LABEL_DEFAULT_PROMPT,
};
}
export async function generateTelegramTopicLabel(params: {
userMessage: string;
prompt: string;
cfg: OpenClawConfig;
agentId?: string;
agentDir?: string;
}): Promise<string | null> {
return await generateConversationLabel({
...params,
maxLength: 128,
});
}