Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.

Телеграм бот для отправки инвайтов в Deadlock

Добавлено 24 окт 2024 в 21:18
Разработка MVP телеграм бота для отправки инвайтов на закрытое бета тестирование игры Deadlock. Проект состоит из 2-х приложений:

Телеграм бот + Web API (точка входа для пользователей).
  • фреймворк NestJS;
  • swagger для генерации документации к api;
  • закрытые Web API с доступом по токенам;
  • бот написан с помощью Telegraf;
  • в боте реализованы сессии и локализация;
  • подобие реферальной системы.

В целом это типовое приложение для телеграм бота. Однако хочу подробней рассказать про несколько интересных решений:
  • Web API с доступом по токенам - позволяет в перспективе подключиться к проекту со сторонних сайтов/сервисов или создать web-админку. А также это очень удобно для тестирования микросервиса и управления Steam ботами. Делать все это через телеграм было-бы не так удобно.
  • Подобие реферельной системы в боте - любой пользователь может создать специальную ссылку для приглашения в бота. Все пользователи перешедшие по ней, для получения доступа к основному функционалу бота, должны будут подписаться на канал который указал пригласивший их.
Приложение для работы с Steam и Deadlock (делает основную работу).
  • Микросервис на NestJS;
  • Имитация клиента steam для обхода сильно ограниченного API;
  • Имитация клиента deadlock для выполнения действий доступных только в игре;

Хоть в целом функционал приложения очень небольшой (управление ботами, добавление в друзья, отправка инвайтов и т.д.) и в рамках MVP можно было обойтись "монолитом". Но было решено сразу выносить этот функционал в микросервис чтобы в случае чего можно было быстро отмасштабировать его, т.к. именно эта часть является узким горлышком всего проекта.

Сама по себе задача работы со Steam уже является очень интересной и не простой. У стима очень ограниченный публичный api, поэтому приходится все делать через имитирование их приложений.

Технические особенности:
  • Использование TypeScript во всех приложениях;
  • Синхронизация типизации общих сущностей и тела запроса/ответа к микросервису;
  • Автоматическая доставка обновлений с помощью Github Actions;
0fae5a8658