UNPKG

tg-bot-builder

Version:

Modular NestJS builder for multi-step Telegram bots with Prisma persistence and pluggable session storage.

59 lines (58 loc) 2.49 kB
import { IBotBuilderOptions } from '../app.interface'; import TelegramBot = require('node-telegram-bot-api'); import { BotRuntimeMessageFactory } from './builder.messages'; import { PageNavigator, PageNavigatorFactoryOptions } from './runtime/page-navigator'; import { IChatSessionState, SessionManager, SessionManagerFactoryOptions } from './runtime/session-manager'; import { IContextDatabaseState, IPersistenceGateway, PersistenceGatewayFactoryOptions } from './runtime/persistence-gateway'; import { Logger } from '@nestjs/common'; export interface IBotRuntimeOptions extends IBotBuilderOptions { id: string; } export interface BotRuntimeDependencies { pageNavigatorFactory?: (options: PageNavigatorFactoryOptions) => PageNavigator; sessionManagerFactory?: (options: SessionManagerFactoryOptions) => SessionManager; persistenceGatewayFactory?: (options: PersistenceGatewayFactoryOptions) => IPersistenceGateway; messageFactory?: BotRuntimeMessageFactory; } export interface IBuilderContextOptions { chatId: TelegramBot.ChatId; session: IChatSessionState; message?: TelegramBot.Message; metadata?: TelegramBot.Metadata; user?: TelegramBot.User; database?: IContextDatabaseState; } export declare function normalizeBotOptions(options: IBotBuilderOptions, index?: number): IBotRuntimeOptions; export declare class BotRuntime { readonly id: string; readonly token: string; readonly bot: TelegramBot; private readonly logger; private readonly pageNavigator; private readonly sessionManager; private readonly persistenceGateway; private readonly helperServices; private readonly globalMiddlewares; private readonly messages; constructor(options: IBotRuntimeOptions, logger: Logger, dependencies?: BotRuntimeDependencies); private registerHandlers; private readonly handleMessage; private buildMiddlewareContext; private logMiddlewareError; private extractMessageFromArgs; private findMessageInValue; private extractMetadataFromArgs; private resolveChatIdFromArgs; private extractChatIdFromValue; private resolveUserFromArgs; private extractUserFromValue; private startFromInitialPage; private prepareContext; private createContextBuilder; private hydrateSessionFromStepState; private normalizePersistedPageId; private processValidationFailure; private advanceToNextPage; private resetToInitialPage; private createContext; }