Общая идея
KaufmanBot — исследовательский и архитектурный проект, цель которого была:
- изучить и продемонстрировать мультипровайдинг в NestJS
- построить плагинную архитектуру для Telegram-бота
- проверить различные инженерные и DevOps-подходы на живом проекте
Проект задумывался не как продукт, а как демонстрационная и обучающая платформа.
Ключевая архитектурная идея — мультипровайдинг
Я привык к мультипровайдингу в Angular и хотел получить аналогичное поведение в NestJS.
Так как NestJS не поддерживает это из коробки, я написал отдельную библиотеку:
nestjs-custom-injector
Что она даёт:
- несколько провайдеров под одним DI-токеном
- плагинную модель без ручной регистрации
- поведение, близкое к Angular multi providers
Бот выступает как практический пример использования этой библиотеки.
Примеры плагинов (сжато)
Системные плагины
Отладка — управление debug-режимом
Команды: debug on/off/state/help, отладка включить/выключить
Поддержка RU / EN и синонимов
Короткие команды — сокращённые алиасы для длинных команд
Команды: scmd state/help, кмд состояние/помощь
Работа в группах — поддержка сценариев в групповых чатах
Команды: groups help/meet, группы помощь/знакомство
Переключение языка — управление локалью пользователя
Команды: my locale, change locale to ru, мой язык
Пользовательские и групповые плагины
Конвертер валют — конвертация валют с контекстом
Команды: convert 1 usd to eur, ещё / дальше
Генератор фактов — случайные факты с продолжением
Команды: get fact(s), дай факт(ы), ещё / дальше
Генератор цитат — случайные цитаты
Команды: get quote(s), дай цитату, ещё / дальше
Генератор шуток — случайные шутки
Команды: get joke(s), пошути, рассмеши, ещё / дальше
Первое знакомство — многошаговый сценарий с сохранением состояния
Команды: meet start/reset/help, знакомство начать
Демо-заказ такси — пошаговый сценарий с несколькими экранами
Команды: get taxi, дай такси
Локализация
Для работы с переводами использована консольная утилита из проекта Rucken:
https://www.npmjs.com/package/rucken
Что сделано в новой версии утилиты:
- полностью переписана на современные библиотеки
- адаптирована под Nx
- интегрирована в плагинную модель бота
Schematics и автоматизация
Реализованы Nx schematics:
- генерация нового бота
- генерация новых плагинов
- единый шаблон архитектуры
Это значительно ускоряло разработку и эксперименты.