@exact-team/nestjs-telegram-oauth2
v0.0.6
Published
telegram oauth2 for nestjs
Maintainers
Readme
NestJS Telegram OAuth2 SDK Module
📦 Установка
npm install @exact-team/nestjs-telegram-oauth2 && npm i @exact-team/telegram-oauth2⚙️ Подготовка
- Создайте бота через @BotFather и получите токен.
- Установите домен OAuth-компонента командой
/setdomainв BotFather. - Извлеките
botId— часть токена до:(напр., для1234567890:ABC...это1234567890). - Сохраните
botIdдля использования на фронтенде.
⚙️ Подробнее о @exact-team/telegram-oauth2
🚀 Основные возможности
- Простая интеграция с NestJS
- Синхронная и асинхронная конфигурация модуля
- Глобальная провайдерная доступность
- Пользовательский декоратор
@InjectTelegramOAuth2() - Строгая типизация параметров и ответов
- Автоматическая инициализация SDK
⚙️ Конфигурация
Синхронная (forRoot)
import { Module } from '@nestjs/common';
import { TelegramOauth2NestjsModule } from '@exact-team/nestjs-telegram-oauth2';
@Module({
imports: [
TelegramOauth2NestjsModule.forRoot({
botToken: 'YOUR_BOT_TOKEN',
validUntil: 2000, // время жизни тела запроса в секундах
}),
],
})
export class AppModule {}Асинхронная (forRootAsync)
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TelegramOauth2NestjsModule } from '@exact-team/nestjs-telegram-oauth2';
@Module({
imports: [
ConfigModule.forRoot(),
TelegramOauth2NestjsModule.forRootAsync({
imports: [ConfigModule],
useFactory: (config: ConfigService) => ({
botToken: config.getOrThrow<string>('TELEGRAM_BOT_TOKEN'),
validUntil: Number(config.getOrThrow<string>('TELEGRAM_VALID_UNTIL_SECONDS')),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}Если
validUntilне указан, проверка времени не выполняется.
🛠 Использование в сервисах
import { Injectable, BadRequestException } from '@nestjs/common';
import { InjectTelegramOAuth2 } from '@exact-team/nestjs-telegram-oauth2';
import { TelegramOAuth2, ITelegramData } from '@exact-team/telegram-oauth2';
@Injectable()
export class TelegramService {
constructor(@InjectTelegramOAuth2() private readonly telegram: TelegramOAuth2) {}
async authenticate(body: ITelegramData) {
const result = this.telegram.handleTelegramOAuthCallback(body);
if (!result.isSuccess || !result.data) {
throw new BadRequestException(result.message || 'Invalid payload');
}
const userData = result.data;
// Найти/создать пользователя в БД и выдать JWT
return { user: userData };
}
}🔍 Внутренняя структура
- telegram-oauth2-nestjs.module.ts
Глобальный модуль с методами
forRootиforRootAsync. - telegram-oauth2-nestjs.builder.ts
Настраивает
ConfigurableModuleBuilderдля создания провайдеров. - create-telegram-oauth2-factory.util.ts
Фабрика для инициализации
TelegramOAuth2с логированием и параметрами.
📋 Требования
- Node.js v20+
- NestJS v10+
- TypeScript v5.0+
🛠️ Разработка
# Сборка
npm run build📄 Лицензия
ISC
✍️ Автор и поддержка
Автор: exact01 Для вопросов и баг-репортов создавайте Issue.
