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

Deep-links до Telegram-бота

ПолеЗначення
Статус🟢 prod
Поверхніweb → bot (інтеграційна поверхня)
Доступністьбезкоштовно
ВласникTODO:
Останнє підтвердження2026-06-13 · curl (live prod-бандл: abitlybot, chances_, open_day_university_) + код:main

Переводить абітурієнта з сайту в Telegram-бот без втрати контексту: бал калькулятора, ЗВО чи офер пакуються в t.me/abitlybot?start=<payload>. Єдине джерело всіх бот-URL фронтенду — src/lib/utils/telegramBot.ts; username бота задає NEXT_PUBLIC_TELEGRAM_BOT_USERNAME (без @; prod = abitlybot, env не задано → CTA ховаються).

Сценарії бота вже намальовані в bot-flows — тут лише мапа «де на сайті → який payload»:

PayloadCTA на сайтіСценарій бота
chances_<specialityId>_<score×100>калькулятор: банер «шанси» + popup після розрахунку (TelegramChancesBanner, TelegramScorePopup)шанси на вступ
open_day_university_<id>сторінка ЗВО: «дні відкритих дверей» (OpenDayTelegramLink, OpenDaysPreview)дні відкритих дверей
<offerId> (голий id)картки оферів і сторінка офера (пошук оферів: OfferCardActions, OfferActions)⚠️ бот v3 не обробляє — падає в дефолтне привітання
link_<token>не мінтиться фронтом — токен видає api-v2прив’язка веб-акаунту
без payload/uk/applicants (CommunityLinks)привітання

Бал у chances_ кодується як Math.round(score × 100) (Telegram приймає в start лише [A-Za-z0-9_-], крапка викидається); бал > 250 або відсутній username → функція повертає null, банер не рендериться.

Web-сторона — суто клієнтська (URL формується в браузері, без API-викликів). Payload споживає бот: парсинг у handlers/start.py, дані — Postgres abitly (див. bot-flows). Крос-сервісний потік — data-flows.

Зв’язки з іншими фічами

Section titled “Зв’язки з іншими фічами”
РепоШляхПримітка
abitly-frontend-v2src/lib/utils/telegramBot.tsgetTelegramBotUrl + buildChancesDeepLink — єдине джерело URL
abitly-frontend-v2src/components/pages/{calculator,universities,shared,offers}/**/Telegram*, OpenDay*, OfferCardActions.tsxCTA-компоненти
abitly-tg-bot-v3src/abitly_bot/handlers/start.pyроутинг payload (link_ / chances_ / open_day_university_)
  • ?start=<offerId> фронт формує, але бот v3 цей payload ігнорує (дефолтне привітання) — контекст офера губиться. TODO: або додати хендлер у бота, або прибрати CTA.
  • link_<token> — не наскрізно (sidecar-Redis ≠ shared, див. caution вище).
  • chances_ зі stale speciality-id → бот мовчки відповідає «нічого не знайдено» (ремап id на 2025 — на боці бота).
ДатаПодіяДжерело
2026-06-13Картку створено за discovery (live бандл + код main фронту й бота)skill document-feature