Как сделать бота для криптообмена в Telegram Mini Apps
Как работают Mini Apps и как с их помощью сделать работающее приложение внутри телеграм-бота
617 открытий3К показов
Привет, я Илья Немченко. Несколько лет назад переехал в Грузию и столкнулся с банальной задачей — быстро обменять крипту на наличные. Грузия к крипте относится лояльно, но инфраструктуры почти не было. Это вылилось в проект, который мы с командой позже превратили в полноценный криптообменный сервис. А недавно мы сделали к нему 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, которым пользовались реальные клиенты.
Мы разрабатывали сервис так, чтобы он состоял из пары кнопок и окошек — максимально просто. Указал, сколько хочешь отдать, — система посчитала, сколько получишь. И наоборот.
Чтобы соблюдать законодательство, для клиентов работает проверка KYC. Постарались сделать ее как можно проще: нужно только сфоткать паспорт, а затем повертеть головой перед вебкой и ответить на опросник — это требование Национального банка Грузии для легальной работы.
Когда клиент пройдет проверку, информация сохранится в его аккаунте. Дальше система подбирает офис для получения наличных и оповещает клиента.
Потом добрались до 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:
В веб-приложении функционал должен быть максимально простым и адаптированным под смартфон — большинство пользователей будут открывать Телеграм с телефона. Поэтому лучше сделать отдельную страницу, убрать все лишнее, где-то поменять дизайн, чтобы навигация была очевидной.
В итоге получились вот такие минималистичные экраны:
Аналитика
Страница закрыта от индексации, но позволяет передавать параметры для аналитики — мы сделали свою систему, похожую на UTM-метки, и связали её с GA. В Telegram нет cookie и классических меток, поэтому мы сделали простую систему трекинга через уникальные токены.
При генерации ссылки к ней добавляется query-параметр вида ?source=partner_xyz, который подтягивается к заявке при первом действии. Это позволяет строить конверсии вплоть до получения наличных.
Еще добавили поддержку промокодов. Они снижают стоимость комиссии для клиента, а нам помогают детальнее отслеживать источники трафика. Это наше собственное решение для телеграм-бота, которого нет в основном сервисе.
Безопасность
Основной вызов — в безопасности.
1. Мы сделали лимиты на регистрацию и логин для уменьшения спама.
2. Добавили CSRF-токен для защиты от подмены запроса.
3. Сделали логику сайта идемпотетной, чтобы случайные повторные действия не меняли состояния сделок.
Телеграм-бот уже набрал аудиторию
Через Telegram-бота к нам приходят пользователи из локальных чатов и каналов. Сейчас у нас 7000+ пользователей, а бот стал неотъемлемой частью сервиса — он экономит время менеджеров и повышает доверие.
Если интересно посмотреть, как это реализовано — можно зайти в бот https://t.me/onetabco_bot.
Надеюсь, кому-то пригодится этот опыт — особенно если вы думаете, как в Telegram запускать не просто бота, а внятный мини-сервис. Делать продукт для людей проще, когда сам был тем, кто нуждался в этом решении.
617 открытий3К показов






