NestJS Telega
nestjs-telega интегрирует telegraf-hardened с NestJS. Библиотека находит providers с декораторами, подключает их обработчики к Telegraf bot и сохраняет NestJS guards, pipes, interceptors и exception filters.
Поддерживаются обычные обработчики update-ов, сцены и wizard-ы, общие параметры reply, результаты callback/inline query и несколько изолированных bot instance.
Установка
Основная линия пакета использует telegraf-hardened и требует Node.js 18 или новее:
npm install nestjs-telega telegraf-hardenedyarn add nestjs-telega telegraf-hardenedПрежняя линия на Telegraf находится в ветке telegraf и устанавливается с npm-тегом telegraf:
npm install nestjs-telega@telegraf telegrafyarn add nestjs-telega@telegraf telegrafБыстрый старт
Один раз импортируйте TelegrafModule в корневой модуль. Храните токен в переменной окружения или configuration provider, а не в исходном коде.
import { Module } from '@nestjs/common';
import { TelegrafModule } from 'nestjs-telega';
import { BotUpdate } from './bot.update';
@Module({
imports: [
TelegrafModule.forRoot({
token: process.env.TELEGRAM_BOT_TOKEN!,
}),
],
providers: [BotUpdate],
})
export class AppModule {}Создайте provider обработчиков. Возвращённая строка будет отправлена как reply; если нужен полный контекст Telegraf, используйте @Ctx().
import { Command, Ctx, Start, Update } from 'nestjs-telega';
import type { Context } from 'telegraf-hardened';
@Update()
export class BotUpdate {
@Start()
onStart(): string {
return 'Добро пожаловать!';
}
@Command('chatid')
onChatId(@Ctx() ctx: Context): string {
return `ID чата: ${ctx.chat?.id}`;
}
}Далее: получение update-ов, декораторы и результаты обработчиков или асинхронная конфигурация.