Telegram

Вход, сессии и профили

Документация: v0.24.0

Перед первым входом откройте Telegram на телефоне и убедитесь, что уже вошли в нужный аккаунт. Оставьте телефон под рукой: он понадобится для кода или сканирования QR.

Подключение состоит из двух шагов:

  1. Получить данные приложения Telegram — api_id (числовой идентификатор) и api_hash (секретный ключ) с my.telegram.org. С ними tg может обращаться к Telegram от имени программы. Обычно этот шаг нужен только при первом входе для выбранного профиля.
  2. Подтвердить вход в свой аккаунт — отсканировать QR-код или ввести код входа. После этого tg сохраняет сессию: данные авторизации, с которыми следующие команды работают без повторного входа.

Оба шага выполняет tg session start. Запускайте команду в локальном терминале: она будет запрашивать данные и ждать подтверждения с телефона.

tg setup проводит первый запуск через оба шага, проверяет пять чатов и предлагает skill для агента. Отведите около пяти минут; история загружается отдельно. Запустите команду в терминале. tg setup --app browser выбирает ручную регистрацию приложения, --method phone — вход по телефону. tg session start остаётся командой только для входа, включая продолжение прерванного входа. Настройка проверяет существующую сессию и не выполняет незаметно новый вход, если Telegram её отклонил.

Приложение с my.telegram.org

my.telegram.org/apps — официальный сайт Telegram для получения данных подключения. Войдите на нём с номером своего аккаунта Telegram.

Что такое приложение Telegram и зачем оно нужно?

Здесь «приложение» — регистрационная карточка программы в API Telegram. В нашем случае подключаться к Telegram будет CLI tg. Вам нужно заполнить форму на сайте; программировать или устанавливать ещё одно приложение не требуется. Telegram выдаёт api_id и api_hash, по которым узнаёт программу. Подтверждение через QR или код затем даёт доступ именно к вашему аккаунту. Это разные шаги.

Telegram позволяет получить один api_id на номер телефона. Если приложение уже зарегистрировано, используйте его данные; создавать второе не нужно. Официальное объяснение Telegram.

Получить данные вручную в браузере — способ по умолчанию:

tg session start --app browser
  1. Команда откроет my.telegram.org/apps. Если браузер не открылся, перейдите по ссылке самостоятельно.
  2. Укажите номер телефона в международном формате, например +34600111222. Код для входа на этот сайт приходит сообщением в уже открытый Telegram.
  3. Если приложение ещё не создано, заполните форму API development tools: название, короткое имя и платформу Desktop. Если сайт показывает существующее приложение, этот шаг пропустите.
  4. Найдите App api_id и App api_hash. Скопируйте каждое значение в терминал, когда tg его запросит. При вводе хеша символы не отображаются — это нормально.
  5. После этого в терминале появится QR-код для входа в аккаунт. Как его сканировать, описано ниже.

Заполнить форму сайта автоматически:

tg session start --app auto

Команда запросит номер телефона и код, пришедший в Telegram для сайта my.telegram.org, затем получит существующие данные приложения или зарегистрирует его. Дальше она покажет QR-код. Если автоматический шаг не сработал, запустите полную команду tg session start --app browser и пройдите шаги выше.

Данные приложения сохраняются только после успешного входа в аккаунт. Код сайта my.telegram.org и код входа в аккаунт — отдельные подтверждения; используйте код из сообщения, которое относится к текущему запросу терминала.

Вход в аккаунт

Войти по QR-коду:

tg session start
  1. Если tg ещё не знает данные приложения, сначала выполните запросы из раздела выше.
  2. Оставьте терминал с QR-кодом открытым на компьютере.
  3. На телефоне откройте Telegram и переключитесь на аккаунт, который хотите подключить.
  4. Откройте Настройки → Устройства → Подключить устройство. Название последнего пункта может отличаться в вашей версии Telegram. Откроется сканер внутри Telegram.
  5. Наведите камеру на QR-код в терминале и подтвердите подключение, если Telegram попросит. Используйте сканер Telegram, а не обычное приложение камеры.
  6. Если для аккаунта включён облачный пароль — дополнительный пароль двухэтапной проверки (2FA), — введите его в терминале по запросу. Символы пароля не отображаются.
  7. Дождитесь сообщения Logged in as …. Если код успел устареть, сканируйте обновлённый код, который показывает терминал.

Войти по номеру телефона:

tg session start phone
  1. При первом запуске получите данные приложения по инструкции выше.
  2. Введите номер нужного аккаунта в международном формате, например +34600111222.
  3. Посмотрите сообщение терминала о способе доставки кода. Обычно код приходит в служебный чат Telegram на устройстве, где вы уже вошли; иногда Telegram выбирает SMS на этот номер. Способ выбирает Telegram. Для стороннего CLI SMS может быть недоступно — в этом случае сначала войдите в официальное приложение на телефоне и используйте код из Telegram или QR. Как Telegram доставляет коды.
  4. Введите свежий код в терминале, в запрос login code.
  5. Если включён облачный пароль (2FA), введите его по следующему запросу. Это ваш ранее настроенный пароль, а не новый одноразовый код.
  6. Дождитесь Logged in as …. При ошибке кода следуйте подсказке терминала; не используйте код для входа на my.telegram.org вместо кода аккаунта.

После входа CLI появляется как новое устройство в Настройки → Устройства. Пример вывода ниже показывает имя аккаунта и путь к сохранённой сессии; путь зависит от ОС. Пути для Windows, macOS и Linux.

Logged in as <your name> (@<username>, id <id>) — profile default.
Session:  ~/.local/share/tg-cli/sessions/default.session
App keys: in the keyring
Next:     tg chats list · tg server install to keep the archive current

Если вход запускает агент

У агента может не быть терминала для отображения QR-кода. --qr-file сохраняет его в PNG, который агент может показать вам:

tg session start --qr-file login.png

При обновлении кода файл заменяется, а после завершения входа удаляется независимо от результата. Без терминала способ работает только тогда, когда у профиля уже есть данные приложения, а у аккаунта нет пароля 2FA. Иначе нужен ввод пользователя.

Проверка и выход

tg account show              # who this profile is logged in as
tg account sessions list     # every device and app logged in to the account; ends nothing
tg session end               # log out on Telegram's side, and delete the session file here

tg session end завершает сессию и на стороне Telegram: устройство исчезает из списка в приложении. Идентификатор и хеш приложения остаются в хранилище ключей, локальная база не меняется.

Срок действия сессии

У tg нет собственного фиксированного срока вроде «вход действует 30 дней». Закрытие терминала или перезагрузка компьютера не завершают сохранённую сессию. Дальнейшая работа зависит от того, принимает ли её Telegram.

Сессия прекращается, если вы завершили её командой tg session end, отключили устройство в Telegram или Telegram отозвал авторизацию. Для неиспользуемых сессий действует настройка Настройки → Устройства → Автоматически завершать старые сеансы. Срок считается с последнего использования этой сессии, а не с первого входа.

В текущем официальном Telegram Desktop доступны интервалы неактивности 1 неделя, 1 месяц, 3 месяца, 6 месяцев и 1 год (365 дней). Максимальный пункт в этом меню — 1 год без активности; это не максимальная общая длительность регулярно используемого входа. Проверьте выбранное значение в своём приложении: варианты могут меняться. Настройка в Telegram API и код официального клиента.

Если команда сообщает «вход не выполнен или сессия завершена» с кодом 4, войдите заново:

tg session start

Для рабочего профиля выполните tg work session start. Решение проблем.

Профили

Профиль — именованное подключение аккаунта Telegram в CLI. Обычно отдельный профиль создают для каждого номера: например, default для личного аккаунта и work для рабочего. У каждого подключения свои сессия входа, данные приложения, настройки, разрешённые получатели и записи запусков.

Имя work — выбранная вами метка, а не номер телефона. Чтобы подключить рабочий аккаунт, выполните:

tg work session start --app browser

При регистрации приложения укажите рабочий номер; при QR-входе переключите Telegram на телефоне на рабочий аккаунт. После входа проверьте, какой аккаунт связан с меткой:

tg work account show

Один и тот же аккаунт тоже можно подключить в нескольких профилях; профиль сам по себе не создаёт новый аккаунт Telegram. Имя профиля указывается первым словом после tg, перед командой:

tg chats list              # profile "default"
tg work chats list         # profile "work"
export TG_PROFILE=work     # the same for the whole shell session

Первое слово считается профилем, если это не команда. Поэтому профиль нельзя назвать chats, messages или другим словом команды; tg session start отклоняет такое имя. Разрешены буквы, цифры, точки, дефисы и подчёркивания; первый символ — буква или цифра.

Приоритет: первое слово команды, TG_PROFILE, defaultProfile в конфигурации, затем default.

Слово, которое не является командой и за которым нет команды, вызывает поясняющую ошибку:

"nonsense" is not a command, so it was read as a profile name — and no command followed it.

TG_PROFILE_LOCK фиксирует процесс на одном профиле. Задайте его в окружении агента: другой профиль первым словом или через TG_PROFILE будет отклонён с кодом 5. Без этой переменной агент может выбрать профиль с меньшими ограничениями.

Где хранятся данные входа

ДанныеМесто хранения
сессияsessions/<profile>.session в каталоге состояния
идентификатор и хеш приложениясистемное хранилище ключей, сервис tg-cli, запись <profile>:api
идентификатор и хеш без хранилища ключейcredentials.json в каталоге настроек
идентификатор и хеш для CITG_API_ID и TG_API_HASH; приоритет над хранилищем ключей

Пути каталогов: Установка.

Если хранилища ключей нет (часто в контейнерах), данные приложения сохраняются в credentials.json рядом с настройками. tg один раз сообщает об этом в stderr.

⚠ TG_CONFIG_DIR, TG_STATE_DIR и TG_CACHE_DIR также меняют запись хранилища ключей. При любой из этих переменных имя сервиса включает каталог настроек. Сессия, созданная без переменных, не видна с ними, и наоборот. Задавайте их всегда или не задавайте вовсе.

⚠ В Linux доступ к хранилищу ключей зависит от XDG_RUNTIME_DIR. cron, ssh и некоторые MCP-клиенты запускают tg без этой переменной. Тогда команды сообщают, что данные приложения не найдены, хотя вход на компьютере уже выполнен. Не входите повторно: это добавит устройство, но не исправит окружение. Задайте XDG_RUNTIME_DIR (Решение проблем).

Дальше

На этой странице