Компания запускает Telegram-бота и хочет показывать в нём статус заказа, бонусы и персональные предложения. Самый быстрый путь — попросить телефон и найти совпадение в CRM. Но введённый номер не доказывает владение аккаунтом, а пересланная ссылка может попасть другому человеку.

Бот — программный собеседник в мессенджере, который отвечает и выполняет действия по правилам компании. Связать бота с клиентом — значит подтвердить отношение между учётной записью клиента и конкретным Telegram-пользователем. Username может меняться, отображаемое имя не уникально, а общий email или телефон не всегда принадлежат одному человеку. Ошибка связи здесь опаснее лишнего дубля: бот может показать чужие сведения.

Разделите три разных решения

Первое — техническая возможность писать пользователю через бота. Второе — подтверждённая связь с аккаунтом магазина. Третье — разрешение на сообщения соответствующего назначения. Нажатие Start не должно автоматически подменять все три.

Telegram поддерживает deep linking с параметром start: бот получает переданный параметр после запуска. Это механизм передачи контекста, а не готовое доказательство личности клиента магазина.[1]

Процесс связывания нужно проектировать вокруг уже надёжной авторизации клиента и отдельного подтверждения конечной связи.

Используйте одноразовый запрос на связывание

Практическая схема начинается в личном кабинете магазина, где клиент уже вошёл в аккаунт. Сайт создаёт короткоживущий непрозрачный одноразовый токен и передаёт его в ссылке запуска бота. В токене не нужно размещать открытый телефон, email или номер заказа.

Когда бот получает токен, сервер проверяет его и запоминает кандидата на связь с конкретным Telegram user ID. На этом шаге связь ещё не открывает доступ к данным. Клиент завершает подтверждение в исходном авторизованном кабинете, где ясно показано, какой Telegram-аккаунт подключается.

Обратное подтверждение важно при пересылке ссылки. Одноразовость ограничивает повторное использование, но не мешает постороннему первым открыть украденную или пересланную ссылку. Токен сам по себе не решает эту проблему. Под токеном здесь понимается случайное служебное значение для подтверждения определённого действия, а не пароль от кабинета.

ШагЧто подтверждаетсяЧего ещё недостаточно
Вход в кабинетДоступ к аккаунту магазинаНеизвестен Telegram-получатель
Открытие ссылки ботаПолучен кандидат Telegram user IDСсылка могла быть переслана
Подтверждение в кабинетеКлиент одобрил конкретную связьНужно отдельно учитывать разрешения
Первое обращение за даннымиДействующая связь и праваНельзя доверять одному старому параметру

Проверяйте доступ при каждом чувствительном действии

Связь хранится на сервере с датой, способом подтверждения и состоянием. При запросе заказа бот проверяет не только наличие связи, но и принадлежность конкретного заказа. Параметр order_id, присланный пользователем, не является разрешением на просмотр.

OWASP рекомендует проверять полномочия на каждом запросе и ограничивать доступ необходимыми правами.[2] Для бота это означает, что безопасность не заканчивается на успешном подключении: любой метод чтения или изменения данных должен соблюдать те же границы.

Не раскрывайте лишние сведения в самом уведомлении. Даже законный владелец может показывать экран другому человеку или пользоваться общим устройством. Содержание выбирается по задаче и риску, а не по объёму доступного профиля.

Условный пример: ссылка ушла родственнику

Покупатель начал подключение в своём кабинете, но переслал ссылку супруге, чтобы она посмотрела бота. Если система сразу связала первого открывшего с покупателем, супруга получает доступ к его истории.

В предлагаемом процессе открытие создаёт только ожидающую подтверждения связь. Кабинет покупателя показывает полученный Telegram-аккаунт и просит подтвердить его. До завершения бот сообщает только состояние подключения, не выдавая заказы и бонусы. Запрос можно отменить; по истечении срока он перестаёт действовать.

Для семейного пользования следует создавать отдельную явно разрешённую модель доступа. Случайная пересылка не должна становиться её заменой.

Продумайте отключение и замену

Клиент должен иметь возможность отключить связь из кабинета. При смене Telegram-аккаунта старый доступ прекращается по согласованному процессу, а новый подтверждается заново. Заблокированный бот и отозванное рекламное разрешение — разные состояния; оба учитываются по назначению.

Для входящих уведомлений платформы настройте проверку подлинности и защиту от повторной обработки доступными средствами интеграции. Секреты бота хранятся как технические учётные данные, а не в таблице, общей для всех подрядчиков.

Какие проверки включить в выпуск

Протестируйте просроченный токен, повторное использование, пересланную ссылку, два одновременных подключения, отключение, смену аккаунта и попытку запросить чужой заказ. Отдельно проверьте, что начало диалога не запускает рекламу без предусмотренного основания.

Результат — объяснимая связь двух аккаунтов с управляемым жизненным циклом. Только после этого поверх неё строят персонализацию, бонусы и сценарии общения: ошибочная идентификация сделает любой полезный сценарий источником чужих данных.

Источники

[1] Telegram. Bot Features: Deep Linking. Telegram Bot Platform Documentation. Проверено 22.09.2026.

[2] OWASP. Authorization Cheat Sheet. OWASP Cheat Sheet Series. Проверено 22.09.2026.