Перейти до вмісту

Telegram — bot + Mini App

ПолеЗначення
БотиAbitly bot · Studsearch bot
Mini AppAbitly Telegram Mini App (Next.js + @telegram-apps/sdk-react)
БібліотекиBot — Telegraf · Mini App — @telegram-apps/sdk-react
Режим botTODO: (webhook / long polling)
Webhook URLTODO:
ТокениTELEGRAM_BOT_TOKEN (Abitly, в SSM /abitly/{env}/backend/ + Railway vars) · /studsearch/prod/telegram/bot_token (Studsearch)
Logger bot (окремий)TELEGRAM_LOGGER_BOT_TOKEN + TELEGRAM_LOG_CHAT_ID — для помилок (observability)
  • Бот-команди (повідомлення в чат) → Telegraf scenes → Abitly API.
  • Mini App запускається з бота кнопкою з web_app button → Next.js на Railway → axios у Abitly API.
secret = SHA256("WebAppData" + TELEGRAM_BOT_TOKEN)
expected_hash = HMAC-SHA256(serialized_init_data_without_hash, secret)

Abitly API виконує перевірку при ендпоінті POST /telegram/auth {initData} → видає JWT.

Sequence → data-flows#telegram-bot—mini-app.

  • Бот не отримує апдейтиgetWebhookInfo (для webhook) / перевірити Telegram polling статус (для long-polling).
  • 409 Conflict від Telegram → одночасно webhook + polling, або кілька інстансів бота. Railway міг створити >1 replica при rolling deploy.
  • Mini App не відкривається з бота → URL у web_app button застарів / Mini App URL у @BotFather не оновлено.
  • Init data invalid у Mini App → токен у Mini App-env і у API-env різний.