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
TypeScript
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;
}