import { normalizeCommandDescription, normalizeSlashCommandName, resolveCustomCommands, } from "../shared/custom-command-config.js"; export type TelegramCustomCommandInput = { command?: string | null; description?: string | null; }; export type TelegramCustomCommandIssue = { index: number; field: "command" | "description"; message: string; }; const TELEGRAM_COMMAND_NAME_PATTERN_VALUE = /^[a-z0-9_]{1,32}$/; const TELEGRAM_CUSTOM_COMMAND_CONFIG = { label: "Telegram", pattern: TELEGRAM_COMMAND_NAME_PATTERN_VALUE, patternDescription: "use a-z, 0-9, underscore; max 32 chars", } as const; function normalizeTelegramCommandNameImpl(value: string): string { return normalizeSlashCommandName(value); } function normalizeTelegramCommandDescriptionImpl(value: string): string { return normalizeCommandDescription(value); } function resolveTelegramCustomCommandsImpl(params: { commands?: TelegramCustomCommandInput[] | null; reservedCommands?: Set; checkReserved?: boolean; checkDuplicates?: boolean; }): { commands: Array<{ command: string; description: string }>; issues: TelegramCustomCommandIssue[]; } { return resolveCustomCommands({ ...params, config: TELEGRAM_CUSTOM_COMMAND_CONFIG, }); } export function getTelegramCommandNamePattern(): RegExp { return TELEGRAM_COMMAND_NAME_PATTERN_VALUE; } export const TELEGRAM_COMMAND_NAME_PATTERN = TELEGRAM_COMMAND_NAME_PATTERN_VALUE; export function normalizeTelegramCommandName(value: string): string { return normalizeTelegramCommandNameImpl(value); } export function normalizeTelegramCommandDescription(value: string): string { return normalizeTelegramCommandDescriptionImpl(value); } export function resolveTelegramCustomCommands(params: { commands?: TelegramCustomCommandInput[] | null; reservedCommands?: Set; checkReserved?: boolean; checkDuplicates?: boolean; }): { commands: Array<{ command: string; description: string }>; issues: TelegramCustomCommandIssue[]; } { return resolveTelegramCustomCommandsImpl(params); }