Telegram

Решение проблем

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

Найдите сообщение или симптом и следуйте инструкции. В режиме --json ошибка выводится одной строкой в stderr: {"error":{"code":"…","message":"…"}}. Код завершения соответствует значению code. Числовые коды: Справочник команд.

По коду завершения

КодИмяТипичная причинаПодробнее
1generic_failureопечатка в команде или сбой tgнеизвестная команда, сообщить
2validation_errorневерное значение, сочетание параметров или несколько подходящих чатовзначения, чаты
3configuration_errorошибка config.json или база новее tgнастройки, база
4authentication_errorнет входа, сессия завершена или хранилище ключей недоступнонет сессии
5permission_errorотказ permissions профиля или Telegramразрешения, Telegram
6not_foundчат, сообщение или человек не найден; база пустаячат, база
7confirmation_requiredчат отсутствует в получателях или некому подтвердить действиеполучатели, подтверждение
8rate_limitedчасовой лимит или ожидание Telegramлимит, FLOOD_WAIT
9timeoutTelegram не ответил или сработал --timeoutзависание
10network_errorTelegram недоступенсеть
11provider_errorTelegram отклонил запросотказ
12provider_unavailableсбой на стороне Telegramсбой
13invalid_responsetg не может прочитать ответ; пока только my.telegram.orgприложение
14outcome_unknownсоединение оборвалось после отправки; сообщение могло уйтинеизвестный результат
130cancelledCtrl-C или отказ от подтвержденияCtrl-C

Сначала: tg doctor

tg doctor

Без подключения показывает зависимости команд: версию, среду выполнения, конфигурацию, сессию, данные приложения, переменные TG_*_DIR, базу, журнал отправок и записи запусков. Работает даже при неисправности остальных команд. Отсутствие сессии отображается в результате, а не как ошибка: код остаётся 0. Сессия и хеш не выводятся, только наличие.

tg doctor --online

--online также подключается один раз и читает аккаунт. Ничего не отправляет и не отмечает прочитанным.

После установки команда tg не найдена

Каталог команд npm отсутствует в PATH.

  • Linux и macOS. Каталог — $(npm prefix -g)/bin. Добавьте его в PATH через ~/.zshrc или ~/.bashrc: export PATH="$(npm prefix -g)/bin:$PATH".
  • Windows. Каталог показывает npm prefix -g, обычно %APPDATA%\npm. Проверьте наличие в $env:Path. Терминал, открытый до установки Node, не видит обновлённый PATH: откройте новый.
  • PowerShell сообщает «running scripts is disabled on this system». npm устанавливает tg.ps1 рядом с tg.cmd, а PowerShell по умолчанию запрещает скрипты. Используйте tg.cmd или разрешите скрипты своему пользователю: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned.
  • Раньше находится другой tg. which -a tg или Get-Command tg -All в PowerShell перечислит варианты. Используйте полный путь или поставьте нужный каталог первым.

Без установки доступна команда npx @leemour/tg-cli doctor.

«error: unknown command …» — неизвестная команда

Код 1, справка в stderr вместо JSON. Первое слово, не являющееся командой, считается профилем, поэтому опечатка может стать именем профиля:

tg chat list
error: unknown command 'list'

Здесь chat считается профилем, а list не является командой. Правильно — chats, во множественном числе. Список: tg --help.

"no session for profile "default" — run tg setup"

Код 4. Профиль ещё не входил на этом компьютере или вышел. Проверьте профиль: первое слово команды или TG_PROFILE (Вход и сессии).

tg setup                    # guided first run
tg work chats list          # or name the profile you logged in to

Если вход выполнен, проверьте различия TG_CONFIG_DIR, TG_STATE_DIR, TG_CACHE_DIR между входом и запуском, например в разных терминалах. Они меняют место хранения входа. tg config show показывает заданные переменные; env | grep TG_ — все.

При первом запуске без ключей приложения ошибка предлагает tg setup (или tg work setup для рабочего профиля). Варианты входа описаны в tg setup --help. Агент может прочитать tg skill show до входа. Прерванная или истёкшая сессия требует tg session start, затем повторной проверки настройкой.

Данные приложения не найдены, хотя вход уже выполнен

Код 4. Файл сессии есть, но хранилище ключей недоступно. Это бывает в cron, ssh, службах и MCP-клиентах с сокращённым окружением tg.

Не входите повторно: это добавит устройство и не исправит окружение. В Linux задайте XDG_RUNTIME_DIR (обычно /run/user/ и номер из id -u):

XDG_RUNTIME_DIR=/run/user/$(id -u) tg chats list

Для cron: Сценарии использования. Хранилище также может быть заблокировано до входа в систему.

Сессия завершена — выполните tg session start

Код 4. Telegram больше не принимает сессию: её завершили с другого устройства (Настройки → Устройства) или через tg session end. Войдите через tg session start.

tg session start требует терминала

Код 2. Для входа человек должен отсканировать код или ввести его. Запустите в терминале. Для агента --qr-file login.png сохраняет QR-код файлом (Вход через агента).

my.telegram.org сообщил о создании приложения, но его нет

Код 13 при tg session start --app auto. Сайт не имеет API: веб-форма изменилась или ответила неожиданно. Остальные ошибки сайта дают код 11 с его сообщением. Используйте обычный tg session start: сайт откроется в браузере, затем вставьте идентификатор и хеш (Данные приложения).

Результат относится к другому профилю

tg config show показывает профиль и источник выбора. TG_PROFILE выбирает профиль, TG_PROFILE_LOCK запрещает другие. Опечатка в команде может быть прочитана как профиль (выше).

Ошибка «is not a valid config»

Код 3. В config.json неизвестная tg настройка или неверный тип значения. Ошибка указывает настройку и профиль. Она не игнорируется, чтобы не применять молча неверные значения. Исправьте файл или выполните tg config unset <setting> (Настройки).

Неверное значение --limit

Код 2. --page тоже требует целое положительное число. Иначе неверное значение могло бы молча вернуть пустой список.

Неверное время --after-time

Код 2. То же для --since-time. Нужен ISO 8601 (2026-09-20T09:00) или период назад (30m, 2h, 1d). Для идентификатора сообщения используйте --after-id или --before-id.

Неверное время --at-time

Код 2. --at-time принимает локальное время или задержку в минутах, часах, днях, не секундах. Минимум минута от текущего момента, максимум год.

Неверная длительность --timeout

Код 2. --timeout и TG_TIMEOUT требуют число с единицей ms, s, m, h, d; число без единицы запрещено.

--all и --page нельзя использовать вместе

Код 2. --all запрашивает все строки, --page — одну страницу. Команда отклоняет сочетание, а не выбирает молча один параметр.

Найдено несколько чатов — укажите идентификатор

Код 2. Название подходит нескольким чатам. Ошибка перечисляет их идентификаторы, JSON — candidates. Повторите с идентификатором. tg не угадывает получателя.

Чат не найден

Код 6. Ни одно название не содержит введённый текст. Попробуйте tg chats list --search <part of it>, идентификатор, @username или me для «Избранного». Личный чат называется именем собеседника в вашем Telegram.

Telegram не знает этот объект

Код 6. Чат, пользователь, имя или сообщение недоступны аккаунту: PEER_ID_INVALID, USERNAME_NOT_OCCUPIED, MSG_ID_INVALID и подобные ошибки. Сообщение могло быть удалено, идентификатор — относиться к другому чату. contacts lookup не находит человека, скрывающего номер или не имеющего аккаунта.

Telegram просит подождать N секунд

Код 8. Ограничение Telegram (FLOOD_WAIT). Подождите указанный срок; JSON содержит retryAfterMs. Обычно возникает после серии запросов, например chats list --all или долгого store fetch. Для store fetch и messages download --all увеличьте --pause.

Превышен часовой лимит профиля

Код 8. Лимит профиля — sendsPerHour, по умолчанию 30. Ошибка показывает время следующей отправки. Увеличивайте лимит только намеренно: tg config set sendsPerHour <n>.

Чат отсутствует в разрешённых получателях

Код 7. Список получателей включён, чат отсутствует. Добавьте его сами при необходимости: tg recipients add <chat>. Агент должен остановиться и спросить вас.

Профиль запрещает действие

Код 5 до отправки в Telegram. Отказ permissions: deny запрещает даже чтение, readonly — изменения. Ошибка указывает ключ, источник и разрешающую команду (Настройки). Агент должен спросить вас, а не менять настройку.

Действие требует подтверждения

Код 7. Уровень команды — ask, но ответить некому: нет терминала или указан --json, --jsonl. Ошибка укажет подтверждающий параметр: --allow-dangerous для удаления, --yes для остальных изменений. Добавляйте его только осознанно. Агент должен спросить вас.

Telegram отклонил запрос

Код 5, если аккаунту запрещено действие, 11 — остальные отказы. Имя причины приходит от Telegram и содержится в JSON как providerError; введённые аргументы не повторяются. Некоторые причины объясняются отдельно:

  • Telegram распознаёт речь только для Premium — код 5. Используйте локальную модель: tg models audio download parakeet-v3, затем tg messages transcribe <chat> <id> --local.
  • Сообщение не является голосовым или видеозаметкой — код 2: указан другой тип сообщения.
  • Telegram не смог распознать речь — код 11; попробуйте --local.

Сбой Telegram

Код 12. Ошибка на стороне Telegram. tg ничего не изменил; повторите через минуту. Если отправляли сообщение, сначала проверьте чат.

Не удаётся подключиться к Telegram

Код 10. Нет сети, мешает firewall, прокси или DNS, либо соединение оборвалось. Код в скобках уточняет причину: ECONNREFUSED, ENOTFOUND, ETIMEDOUT. Локальные команды работают без сети: tg --offline chats list.

outcome_unknown после отправки

Код 14. Соединение оборвалось после отправки, и сообщение могло уйти. Не отправляйте его повторно без изменений. Используйте --send-id из ошибки: Telegram исключит дубликат.

tg messages send <chat> "<the same text>" --send-id <id from the error>

После --at-time проверьте tg messages scheduled <chat>: отложенная отправка никогда не повторяется.

Команда зависла

Одноразовые команды закрывают соединение и выходят. Без ответа Telegram команда завершается с кодом 9 и timeout. Чтобы ограничить время и увидеть место остановки:

tg --timeout 30s --trace chats list

--timeout охватывает всю команду, включая вход, закрывает соединение и завершает с кодом 9. В --trace строка → без ← означает запрос без ответа: проблема сети или Telegram (Диагностика).

Если результат выведен, но команда не выходит, это сбой. Через пять секунд tg перечисляет открытые ресурсы (tg: finished, but … stayed open) и выходит. Приложите эту строку к обращению. watch, serve, mcp должны работать до остановки.

Ctrl-C

Код 130. Команда остановлена и соединение закрыто. При остановке отправки сначала проверьте чат (tg messages list <chat> --limit 3): сообщение могло уйти. Фоновый store fetch продолжит работу; остановите через tg store jobs cancel <job>.

Ответ кроме y на запрос подтверждения даёт тот же код; действие не выполнено.

База записана более новой версией

Код 3. Другой CLI или новый tg обновил базу до несовместимой структуры. Выполните tg upgrade. Данные не теряются (Локальная база).

Для профиля пока нет сохранённых данных

Код 6. --offline, messages search, store status, store export читают только локальную базу, а профиль ещё ничего не сохранил. Сначала выполните онлайн-команду, например tg chats list.

messages search ничего не находит

Поиск не запрашивает Telegram. Пустой результат означает отсутствие сохранённых данных, а не самого сообщения. Прочитайте чат (tg messages list <chat>) или загрузите историю через tg store fetch, затем повторите (Поиск). tg store check показывает отстающие чаты.

tg serve уже работает для профиля

Код 2. Разрешён один serve на профиль. tg server status показывает процесс и время запуска; tg server stop останавливает запущенный через server start или службу.

Фоновый сервер не запускается

Причина находится в tg server logs. Обычно служба не видит хранилище ключей: оно ещё закрыто или нет XDG_RUNTIME_DIR. После переноса Node или tg повторите tg server install: служба использует пути времени установки (Служба).

npx @leemour/tg-cli запускает старую версию

npx сохраняет скачанное. Запросите новую версию: npx @leemour/tg-cli@latest.

Сообщить о проблеме

tg doctor report           # what a report holds, and what it never holds; writes nothing
tg doctor report create    # write it to a file, and say where to send it
tg doctor report create --run <id>    # about another run; ids from tg runs list

create записывает tg-report-<time>.json в текущий каталог или --output, доступный только вам. Внутри версии программы, среды и системы, результат tg doctor, последний неудачный запуск (операции, длительности, ошибки) и 20 последних попыток отправки без текста, только результат и длина. Идентификаторы чатов, сообщений и аккаунтов заменены метками, значимыми лишь внутри файла. Текстов, названий, имён, телефонов, сессий и данных приложения нет. Ошибки сохраняются автоматически без --record (Отчёт).

Создайте обращение на GitHub: опишите действия и результат, приложите файл. Обращение и файл публичные: сначала прочитайте его.

⚠ Не прикладывайте каталог состояния, файл сессии или ~/.local/share/cli-messaging/: они содержат доступ к аккаунту и ваши сообщения.

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

По коду завершенияСначала: tg doctorПосле установки команда tg не найдена«error: unknown command …» — неизвестная команда"no session for profile "default" — run tg setup"Данные приложения не найдены, хотя вход уже выполненСессия завершена — выполните tg session starttg session start требует терминалаmy.telegram.org сообщил о создании приложения, но его нетРезультат относится к другому профилюОшибка «is not a valid config»Неверное значение --limitНеверное время --after-timeНеверное время --at-timeНеверная длительность --timeout--all и --page нельзя использовать вместеНайдено несколько чатов — укажите идентификаторЧат не найденTelegram не знает этот объектTelegram просит подождать N секундПревышен часовой лимит профиляЧат отсутствует в разрешённых получателяхПрофиль запрещает действиеДействие требует подтвержденияTelegram отклонил запросСбой TelegramНе удаётся подключиться к Telegramoutcome_unknown после отправкиКоманда завислаCtrl-CБаза записана более новой версиейДля профиля пока нет сохранённых данныхmessages search ничего не находитtg serve уже работает для профиляФоновый сервер не запускаетсяnpx @leemour/tg-cli запускает старую версиюСообщить о проблеме