mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-08 08:45:41 +00:00
72 lines
2.0 KiB
TypeScript
72 lines
2.0 KiB
TypeScript
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<string>;
|
|
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<string>;
|
|
checkReserved?: boolean;
|
|
checkDuplicates?: boolean;
|
|
}): {
|
|
commands: Array<{ command: string; description: string }>;
|
|
issues: TelegramCustomCommandIssue[];
|
|
} {
|
|
return resolveTelegramCustomCommandsImpl(params);
|
|
}
|