Telegram — bot + Mini App
| Поле | Значення |
|---|---|
| Боти | Abitly bot · Studsearch bot |
| Mini App | Abitly Telegram Mini App (Next.js + @telegram-apps/sdk-react) |
| Бібліотеки | Bot — Telegraf · Mini App — @telegram-apps/sdk-react |
| Режим bot | TODO: (webhook / long polling) |
| Webhook URL | TODO: |
| Токени | 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) |
Точки входу
Section titled “Точки входу”- Бот-команди (повідомлення в чат) → Telegraf scenes → Abitly API.
- Mini App запускається з бота кнопкою з
web_appbutton → Next.js на Railway → axios у Abitly API.
Init data validation (Mini App)
Section titled “Init data validation (Mini App)”secret = SHA256("WebAppData" + TELEGRAM_BOT_TOKEN)expected_hash = HMAC-SHA256(serialized_init_data_without_hash, secret)Abitly API виконує перевірку при ендпоінті POST /telegram/auth {initData} → видає JWT.
Потік повідомлень
Section titled “Потік повідомлень”Sequence → data-flows#telegram-bot—mini-app.
Типові проблеми
Section titled “Типові проблеми”- Бот не отримує апдейти →
getWebhookInfo(для webhook) / перевірити Telegram polling статус (для long-polling). - 409 Conflict від Telegram → одночасно webhook + polling, або кілька інстансів бота. Railway міг створити >1 replica при rolling deploy.
- Mini App не відкривається з бота → URL у
web_appbutton застарів / Mini App URL у@BotFatherне оновлено. - Init data invalid у Mini App → токен у Mini App-env і у API-env різний.