каналы
Telegram, MAX и VK делят один экран подключения (общий ChannelConnectScreen): поле для одного секрета, живая проверка у провайдера до сохранения, и статус, который спрашивает провайдера заново при каждом заходе — а не читает сохранённый флаг (adr/0143). Весь раздел под правом channel:manage: оператору без него пункт просто не виден, а сервер отказывает на всех трёх маршрутах независимо.
Вставьте токен бота, который выдал BotFather при создании бота. AGO проверит его в Telegram, прежде чем сохранить.
Одно поле, один секрет. Кнопка «Подключить» неактивна, пока поле пусто — тот же disabled, что и в консоли. Токен — поле-пароль: набранное скрыто и никогда не возвращается обратно (в ответе на подключение нет поля, из которого он мог бы прийти).
Между нажатием и ответом кнопка гаснет в «Подключаем…», поле заблокировано. Проверка — это настоящий сетевой вызов к Telegram (getMe), а не локальная валидация формата: экран не рисует успех, пока провайдер не согласился.
«Подключено» здесь значит «провайдер только что согласился», а не «стоит флаг». Значок в стиле check_circle и подпись «Проверено» несут время последнего живого ответа Telegram (checkedAt). Бот, удалённый на стороне Telegram, перестанет быть «Подключено» в тот же момент, когда сюда посмотрят.
Третье состояние, отдельное и от «проверено», и от «отказ». Живая проверка не уложилась в срок или провайдер не ответил вовсе — это ничего не говорит о самом токене. Нейтральный тон и совет «подождать и повторить», никогда не красное «получите новый токен»: два факта требуют противоположных действий.
Отказ несёт причину — дословный ответ провайдера. Красный тон (токены danger из 26-183) и прямое действие: получить новый токен и подключить заново. Причина берётся из refusalReason, а не сочиняется приложением.
Бот сразу перестанет доставлять сообщения. Вы можете подключить его — или другого бота — снова в любой момент.
Отключение — за подтверждением, но не «опасное навсегда». Нижний лист, как у вето записи: подтверждающая кнопка в заливке danger (danger-fill/on-danger из 26-183), потому что доставка прекратится немедленно — но текст прямо говорит, что подключить можно снова.
Вставьте токен бота, который выдал @MasterBot при создании бота в MAX. AGO проверит его в MAX, прежде чем сохранить.
Тот же экран, другой провайдер. MAX переиспользует ChannelConnectScreen целиком — меняются только название, текст-подсказка и имя провайдера в сообщениях. Все шесть состояний Telegram выше воспроизводятся здесь один в один, поэтому нарисовано только «не подключён»: доказательство переиспользования, а не копия шести кадров.
Вставьте ключ доступа сообщества (Управление → Работа с API → Ключи доступа, с доступом к сообщениям). AGO проверит его в VK, прежде чем сохранить.
Тот же каркас на одном секрете — ключ доступа сообщества, проверяемый живым вызовом groups.getById до записи строки. Отличие VK — в том, что показывается после подключения (следующий кадр).
Единственные два секрета в продукте, которые показываются человеку, — и ровно один раз. URL обратного вызова и секретный ключ приходят только в ответе на подключение и нигде не хранятся для повторного показа. Каждый — моноширинным, с действием «Копировать» рядом; плашка «Показывается один раз» предупреждает, что уйти с экрана — значит их потерять. Значения на макете — примеры (example.test), не настоящий адрес и не настоящий ключ.
Честно говорит, что значений больше нет, а не молча прячет панель. При перезаходе или у второго оператора секретов уже нет для показа — экран прямо это заявляет и указывает единственный способ получить новые: отключить и подключить заново. Всё, что можно было утаить (пустая карточка), лгало бы про доступность.