Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Как сделать бота для криптообмена в Telegram Mini Apps

Как работают Mini Apps и как с их помощью сделать работающее приложение внутри телеграм-бота

617 открытий3К показов
Как сделать бота для криптообмена в Telegram Mini Apps

Привет, я Илья Немченко. Несколько лет назад переехал в Грузию и столкнулся с банальной задачей — быстро обменять крипту на наличные. Грузия к крипте относится лояльно, но инфраструктуры почти не было. Это вылилось в проект, который мы с командой позже превратили в полноценный криптообменный сервис. А недавно мы сделали к нему Telegram-бота через Mini Apps. Расскажу, как мы это сделали и какие ресурсы использовали.

Как создавали криптообменник

Сначала это был просто внутренний инструмент — автоматизировать сделки и минимизировать ручной труд. Потом поняли, что можем сделать из этого нормальный продукт — веб-приложение и бота для заявок на обмен, которые сами считали бы комиссию, конвертировали валюту и отправляли подтверждение сделки.

Что хотелось на старте

  • Автоматическая верификация (KYC)
  • Поддержка нескольких сетей и валют
  • Фиксация курса при создании заявки
  • Уведомления, UX без боли и многоступенчатых форм
  • Идеально — Telegram-бот, потому что вся аудитория уже там

Сформировали команду, зарегистрировали бизнес в Грузии и начали получать лицензию VASP — это лицензия провайдера виртуальных активов для работы с криптовалютами. Это оказалось нетривиально — пришлось собрать кучу документов. Если вдруг соберетесь получать криптолицензию в Грузии :), расписываю процесс подробно:

  • Регистрация компании. При этом есть тонкость — нужно, чтобы директором и учредителем были разные лица. В нашей команде есть несколько партнёров из Грузии, они взяли эти роли на себя.
  • Подтверждение образования: нужно подготовить диплом и доказать, что у директора есть профильное образование в области финансов или экономики. 
  • Подготовка справки о несудимости. У директора не должно быть нарушений предпринимательского, банковского или финансового законодательства.
  • Установка ПО для борьбы с отмыванием денег и финансированием терроризма. В нашем случае это AMLBot, Crystal и SumSub.
  • Запуск AML-проверки: нужно принять инструкции, зафиксировать ответственных, внедрить оценку рисков. Для этого мы нанимали команду юристов и привлекали AML-офицера.

Код и стек

Все приличные криптообменники листятся на BestChange — а у него аж 15 требований для попадания в мониторинг. Решили не заморачиваться разработкой с нуля и купили готовое решение, соответствующее всем этим требованиям — по сути, это конструктор критообменников. Он работает на стеке JS/TS + MongoDB.

Есть как полноценные конструкторы «под ключ» вроде BoxExchanger, так и скрипты, которые можно добавлять на собственный сайт: Exchanger CMS, Cryptomus Swap Script, Premium Exchanger и другие. Их можно арендовывать или купить целиком.

Конструктор пришлось дорабатывать: местами код был тяжелым, появлялись странные и не всегда логичные строчки.

Как только закончили с закулисной частью, перешли к доработкам клиентской составляющей:

  • Прикрутили авторизацию при помощи Телеги и создали отдельное телеграм-приложение. К телеграму подключили по API сервис AML/KYC-проверок SumSub.
  • Допилили систему базы данных — теперь данные из сервиса верификации SumSub подтягивались в профиль клиента.
  • Добавили фильтры в бэкенде: они позволяют анализировать количество и объём сделок за разные периоды времени.
  • Доработали блог для своего сервиса и выкатили на сайт. В нем добавили фильтрацию, тегирование, переключение языков, автоматические маркетинговые баннеры, типограф, раздел «читать ещё» и другие фичи. Теперь в блоге рассказываем новости крипты и делимся полезными находками для бизнеса и людей, которые сталкиваются с зарубежными переводами.

Это уже был MVP, которым пользовались реальные клиенты.

Мы разрабатывали сервис так, чтобы он состоял из пары кнопок и окошек — максимально просто. Указал, сколько хочешь отдать, — система посчитала, сколько получишь. И наоборот.

Как сделать бота для криптообмена в Telegram Mini Apps 1
Так обмен выглядит на сайте

Чтобы соблюдать законодательство, для клиентов работает проверка KYC. Постарались сделать ее как можно проще: нужно только сфоткать паспорт, а затем повертеть головой перед вебкой и ответить на опросник — это требование Национального банка Грузии для легальной работы.

Как сделать бота для криптообмена в Telegram Mini Apps 2
Окошко верификации пользователя

Когда клиент пройдет проверку, информация сохранится в его аккаунте. Дальше система подбирает офис для получения наличных и оповещает клиента.

Потом добрались до Telegram Mini Apps

Почему вообще решили делать Telegram-бота? Ответ очевидный — почти все наши клиенты используют Telegram, особенно эмигранты и люди, работающие удалённо. Мы хотели, чтобы человек мог пройти весь путь — от заявки до получения фиата — внутри мессенджера, без лишних переходов.

Веб-приложение при этом выглядит, как мини-версия сайта — поэтому можно настроить под себя дизайн, поработать над UX и не ограничиваться интерфейсом бота.

Чтобы написать Telegram Mini App, мы изучили документацию самой Телеги:

  • Mini Apps — основная документация по веб-приложениям;
  • Telegram Bot API — документация по спецификации API;
  • TON Documentation — документация по разработке в TON.

Стек и архитектура

Mini Apps — это веб-приложение, которое загружается через Telegram WebView и открывается внутри чата с ботом.

Мы адаптировали под бота наш основной интерфейс: урезали функциональность, упростили визуал, для этого выбрали стек TypeScript + MySQL. Фронт написан на Next.js.

Если не хотите все делать с нуля, можно использовать готовые шаблоны с GitHub:

  1. NextJS
  2. Vue.js
  3. React + Vite

В веб-приложении функционал должен быть максимально простым и адаптированным под смартфон — большинство пользователей будут открывать Телеграм с телефона. Поэтому лучше сделать отдельную страницу, убрать все лишнее, где-то поменять дизайн, чтобы навигация была очевидной.

В итоге получились вот такие минималистичные экраны:

Как сделать бота для криптообмена в Telegram Mini Apps 3

Аналитика

Страница закрыта от индексации, но позволяет передавать параметры для аналитики — мы сделали свою систему, похожую на UTM-метки, и связали её с GA. В Telegram нет cookie и классических меток, поэтому мы сделали простую систему трекинга через уникальные токены.

При генерации ссылки к ней добавляется query-параметр вида ?source=partner_xyz, который подтягивается к заявке при первом действии. Это позволяет строить конверсии вплоть до получения наличных.

Еще добавили поддержку промокодов. Они снижают стоимость комиссии для клиента, а нам помогают детальнее отслеживать источники трафика. Это наше собственное решение для телеграм-бота, которого нет в основном сервисе.

Безопасность

Основной вызов — в безопасности.

1. Мы сделали лимиты на регистрацию и логин для уменьшения спама.

2. Добавили CSRF-токен для защиты от подмены запроса.

3. Сделали логику сайта идемпотетной, чтобы случайные повторные действия не меняли состояния сделок.

Телеграм-бот уже набрал аудиторию

Через Telegram-бота к нам приходят пользователи из локальных чатов и каналов. Сейчас у нас 7000+ пользователей, а бот стал неотъемлемой частью сервиса — он экономит время менеджеров и повышает доверие.

Если интересно посмотреть, как это реализовано — можно зайти в бот https://t.me/onetabco_bot.

Надеюсь, кому-то пригодится этот опыт — особенно если вы думаете, как в Telegram запускать не просто бота, а внятный мини-сервис. Делать продукт для людей проще, когда сам был тем, кто нуждался в этом решении.

Следите за новыми постами
Следите за новыми постами по любимым темам
617 открытий3К показов