Глубокие ссылки: start, startgroup, startchannel и startapp
Что это
Глубокая ссылка (deep link) — ссылка `t.me` на бота с параметром на конце: по нему бот понимает, откуда пришёл человек и что ему открыть. `start` открывает личный чат, `startgroup` добавляет бота в группу, `startchannel` — в канал администратором, а `startapp` открывает его мини-приложение.
Как сделать
- Личный чат: `https://t.me/your_bot?start=spring_sale`. Вместо поля ввода… Личный чат: `https://t.me/your_bot?start=spring_sale`. Вместо поля ввода появится кнопка «Старт» — даже у тех, кто уже запускал бота; после нажатия бот получит `/start spring_sale`.
- Группа: `https://t.me/your_bot?startgroup=spring_sale`. Человек выбирает… Группа: `https://t.me/your_bot?startgroup=spring_sale`. Человек выбирает группу, бот получает `/start@your_bot spring_sale`. Допиши `&admin=delete_messages+pin_messages`, чтобы попросить права администратора.
- Канал: `https://t.me/your_bot?startchannel&admin=post_messages+edit_messages`.… Канал: `https://t.me/your_bot?startchannel&admin=post_messages+edit_messages`. Человек выбирает канал, бот входит в него администратором.
- Мини-приложение: `https://t.me/your_bot?startapp=spring_sale` открывает главное… Мини-приложение: `https://t.me/your_bot?startapp=spring_sale` открывает главное мини-приложение бота, и оно получает значение в `start_param`. Добавь `&mode=compact`, чтобы открыть его на половину экрана, или `&mode=fullscreen` — на весь экран.
Осторожно
- Параметр у `start` и `startgroup` — до 64 символов, только A–Z, a–z, 0–9, _ и -. Для остального Telegram советует base64url.
- В ссылках на именованное мини-приложение (`t.me/your_bot/app?startapp=`) параметр может быть до 512 символов.
- Параметр видит и может поменять любой, у кого есть ссылка: не клади туда пароли и личные данные.
- `startgroup` показывает только группы, куда человек может добавлять участников, а с `admin` — только те, где он может назначать администраторов.
- `startchannel` требует `admin` и не принимает параметр.
- Если у бота нет главного мини-приложения, ссылка `startapp` просто откроет бота.
С Gem
Gem делает такие ссылки для каждого проекта: `t.me/gembot?startapp=<name>` открывает страницу мини-приложения проекта, `t.me/gembot?start=<name>` — его чат в @gembot. Друзей приглашают по своей веб-ссылке `gem.bot/<name>?i=<code>` или через окно отправки Telegram, и засчитывается первое приглашение.
Источники
- https://core.telegram.org/bots/features#deep-linking
- https://core.telegram.org/api/links#bot-links
- https://core.telegram.org/bots/webapps
- https://core.telegram.org/bots/api-changelog