Бот управления очередью на настольный теннис (Telegram). Архитектура по DDD: domain → application → infrastructure → interfaces.
npm install- В
.envзадайтеTG_BOT_API_TOKEN. - В
.envзадайтеTG_CHAT_ID(id основного чата). npm start
- Обычный
npm startзапускает бота без метрик и без обращений к MongoDB. - Для включения метрик запускайте
npm run start:metricsили передавайте флаг--metrics(-m) вручную. - Для режима метрик задайте
METRICS_MONGODB_URI(и при необходимостиMETRICS_MONGODB_DB,METRICS_MONGODB_COLLECTION). - Для запуска через
docker composeможно не задавать URI вручную: контейнер соберёт его изtt-queue-bot/.env.mongo.local(MONGO_INITDB_ROOT_USERNAME,MONGO_INITDB_ROOT_PASSWORD,MONGO_INITDB_DATABASE,MONGODB_HOST,MONGODB_PORT,MONGODB_AUTH_SOURCE). - Ограничьте чат для выдачи статистики:
METRICS_CHAT_ID(числовой id). - Команда
/metrics 24h(или/metrics 7d, по умолчанию 24h) показывает сводку использования только в доверенном чате.
- Unit:
npm test(Jest, покрыты доменный сервис и use-case создания матча).
- Краткое описание слоёв и потоков:
docs/architecture.md. - Сообщения и тексты:
src/application/messages/localization.js+src/application/messages/locales/*.
- Язык задаётся через переменные окружения
BOT_LOCALE(по умолчаниюru) иBOT_FALLBACK_LOCALE. - Конфигурация:
src/application/config/i18n.js. - Базовые локали:
src/application/messages/locales/ru.jsиsrc/application/messages/locales/en.js. При отсутствии ключа используется fallback.
/play @username— отправляет приглашение указанному оппоненту; он может принять или отклонить через кнопки в сообщении.- Inline query:
- «Найти игрока» — ставит игрока в поиск.
- «Проверить очередь» — выводит очередь матчей.
- «Посмотреть тех, кто уже отыграл» — список сыгравших.