Главная · Блог · Почему Telegram-бот не отвечает

Почему Telegram-бот не отвечает

· обновлено · Команда ЧБТ · Telegram, Диагностика

«Бот не отвечает» — это не одна поломка, а восемь разных с одинаковым внешним видом. Часть из них — про Telegram (токен, webhook, блокировка), часть — про сценарий (выключен, нет нужного триггера, ключевое слово увело не туда), одна — про тариф. Чинить наугад долго: сначала нужно понять, доходит ли сообщение до ЧБТ вообще, и только потом лезть в сценарий. Ниже каждая причина описана одинаково: как выглядит симптом, где посмотреть, чтобы её подтвердить или исключить, и что сделать. Порядок — от частых к редким, поэтому идти лучше сверху вниз.

Диагностика за две минуты: три вопроса до всякого ремонта

Прежде чем что-то менять, ответьте на три вопроса — они сразу сужают круг причин.

  1. Сообщение вообще дошло до ЧБТ? Напишите боту с любого аккаунта и откройте раздел «Диалоги». Если переписка появилась — Telegram, токен и webhook в порядке, проблема в сценарии (причины 4, 5, 6). Если в «Диалогах» пусто, а бот ответил фразой о лимите тарифа, — это причина 1: сообщения новых собеседников сверх лимита в «Диалоги» не попадают. Если пусто и ответа нет — сообщение не доехало, смотрите токен и webhook (причины 2 и 3).
  2. Что видно в «Каналах»? Статус «Работает» — ЧБТ смог связаться с Telegram при последней проверке. «Ошибка» с текстом под ней — читайте текст, это готовый диагноз. «Не проверен» — канал добавлен, но проверка ещё не проходила; нажмите «Переустановить webhook».
  3. Бот молчит совсем или отвечает не то? Полная тишина — одна группа причин. Ответ коротким текстом про лимит тарифа — причина 1. Ответ есть, но бот «перескакивает» на другую ветку или начинает сначала — причина 6.

Ещё одна деталь: проверяйте с аккаунта, который боту раньше не писал, или хотя бы отправьте /start заново. У вашего собственного диалога может быть особое состояние — он передан оператору или стоит на паузе, — и вы будете чинить то, что не сломано.

Причина 1. Исчерпан лимит 30 диалогов бесплатного тарифа

Симптом. Новым людям бот отвечает одной короткой фразой: «Лимит диалогов на бесплатном тарифе исчерпан. Подключите Базовый — 650 ₽/мес». Сценарий для них не запускается, кнопки не работают, а их сообщений нет в «Диалогах». Те, кто уже писал боту в этом месяце, при этом получают ответы как обычно, — поэтому, проверяя со своего аккаунта, вы можете ничего не заметить. Владельцу это часто описывают как «бот сломался и пишет какую-то ерунду».

Проверка. Откройте «Обзор» проекта: в подзаголовке указан тариф. Если там «Бесплатный», посмотрите счётчик в карточке тарифа на той же странице (он же — в разделе «Оплата»): «30 из 30» (или больше) значит, что лимит этого месяца исчерпан. Лимит считается по уникальным собеседникам за календарный месяц, по всем каналам проекта вместе: Telegram, MAX, ВКонтакте и виджет складываются. Ваши собственные проверки с разных аккаунтов тоже считаются, тест-чат редактора — нет. Отдельный случай: у вас был Базовый, но оплата не прошла или автопродление отключено — после окончания оплаченного периода проект возвращается на Бесплатный со всеми его лимитами. Это видно в разделе «Оплата».

Решение. Либо дождаться первого числа следующего месяца — счётчик обнулится, бот заработает сам, — либо перейти на Базовый: лимит снимается сразу после оплаты. Если бот нужен только для редких обращений, 30 диалогов может хватать, но тогда не тратьте их на проверки с пяти аккаунтов — логику проверяйте в тест-чате редактора.

Причина 2. Токен неверный или отозван — ошибка 401

Симптом. В «Каналах» статус «Ошибка», под ним текст «Unauthorized» или «токен бота отклонён (401 Unauthorized) — вероятно, отозван или заменён». На почту владельца проекта пришло письмо о проблеме с каналом — ЧБТ отправляет его при первом же отказе Telegram, не чаще раза в сутки. В «Диалогах» новых сообщений нет.

Проверка. Откройте @BotFather → /mybots → ваш бот → «API Token» и сравните с тем, что вставляли в ЧБТ. Совпадение проверить нельзя — ЧБТ не показывает сохранённый токен, — но если кто-то из команды делал /revoke или бота пересоздавали, старый токен точно мёртв. Вторая типичная история: токен скопировали не целиком или с пробелом в конце — тогда ошибка появляется сразу при подключении.

Решение. Токен в существующем канале не редактируется. Удалите канал кнопкой «Удалить» в «Каналах» и подключите Telegram заново с актуальным токеном — webhook установится автоматически. Контакты сохранятся: они привязаны к Telegram ID людей и к проекту, а не к каналу. Если токен отозвали из-за утечки, заодно проверьте, откуда он мог утечь; порядок действий подробно описан в статье как создать Telegram-бота, в разделе про /revoke.

Причина 3. Webhook перехвачен другим кодом или сервисом

Симптом. Всё выглядело исправным, статус «Работает», а сообщения перестали приходить в «Диалоги». Иногда бот при этом отвечает — но не по вашему сценарию, а так, как отвечал раньше в другом сервисе или по старому коду.

Проверка. У Telegram один webhook на бота. Если бота когда-то запускали своим скриптом на сервере или в другом конструкторе, и этот скрипт снова заработал — при старте он вызвал setWebhook или deleteWebhook и забрал бота себе. Вспомните, не перезагружался ли сервер разработчика, не включил ли кто-то старый проект. Если бот ещё и отвечает чужими фразами — сомнений нет.

Решение. Остановите старый код или отключите бота в другом сервисе — иначе перехват повторится. Затем в «Каналах» нажмите «Переустановить webhook»: ЧБТ заново пропишет адрес https://app.chbt.io/webhook/telegram/ID_канала и секретный ключ. Напишите боту — сообщение должно появиться в «Диалогах». Пошаговая инструкция по подключению — в справке.

Причина 4. Сценарий выключен, пустой или без триггера /start

Симптом. Сообщение появляется в «Диалогах» — значит, Telegram и webhook работают, — но ответа нет. Полная тишина в ответ на /start, на кнопку «Start» и на любой текст.

Проверка. Откройте «Обзор»: внизу список сценариев, напротив каждого — кнопка «Вкл» или «Выкл». Выключенный сценарий не реагирует ни на что. Три ситуации, в которых сценарий оказывается выключен незаметно: вы только что его создали (новые сценарии выключены по умолчанию), вы сделали копию кнопкой «Дубликат» и правили её (копия тоже создаётся выключенной, а оригинал вы могли выключить «чтобы не мешал»), или сценарий выключил коллега. Если сценарий включён, откройте его в редакторе и посмотрите на первый триггер: для реакции на кнопку «Start» нужен именно триггер «Команда /start». Сценарий, который начинается с «Ключевого слова» или «Нажатия кнопки», на старт не отвечает.

Решение. Включите нужный сценарий. Если включены два и оба реагируют на /start — сработает первый попавшийся, поэтому держите один рабочий и выключайте черновики. Добавьте триггер «Команда /start», если его нет. Затем прогоните «Проверить сценарий» в редакторе и следом — живой /start с телефона. Учтите обратный эффект: тест-чат включает сценарий, который вы проверяете, — черновик после теста выключите вручную, иначе он начнёт перехватывать /start у рабочего.

Причина 5. Нет триггера «Любое сообщение»: на /start отвечает, на текст — нет

Симптом. Кнопка «Start» работает, меню приходит, но стоит человеку написать «здравствуйте» или «сколько стоит стрижка» — тишина. В «Диалогах» сообщение есть, ответа нет. Часто это замечают не сразу: владелец тестирует кнопками, а клиенты пишут словами.

Проверка. В редакторе посмотрите список триггеров сценария. Если там только «Команда /start» и несколько «Ключевых слов», любой текст, который не совпал с ключевым словом, никуда не ведёт — ЧБТ просто не находит, какой сценарий запустить, и молчит. Это не ошибка системы, а честное «мне не сказали, что делать».

Решение. Добавьте триггер «Любое сообщение» — он срабатывает на всё, что не поймали остальные триггеры, — и направьте его на блок «Сообщение» с текстом вроде «Я бот салона, отвечаю кнопками. Выберите, что нужно:» и тем же стартовым меню. Одна оговорка: пока человек идёт по сценарию (например, бот ждёт телефон в блоке «Сбор данных»), триггер «Любое сообщение» не срабатывает — иначе каждый ответ уводил бы человека в начало. Он ловит только «свободные» сообщения вне сценария. Полный список ошибок в сценариях, из-за которых бот кажется сломанным, — в разборе десяти ошибок в сценариях ботов.

Причина 6. Триггер «Ключевое слово» перехватил ввод

Симптом. Бот не молчит, но ведёт себя странно: посреди сбора телефона вдруг присылает прайс, или после ответа на вопрос возвращает человека в начало. Клиент пишет: «Он меня не понимает». Со стороны владельца — «бот не отвечает на то, что спрашивают».

Проверка. Ключевые слова в ЧБТ проверяются на каждое входящее сообщение, даже если человек уже внутри сценария — так задумано, чтобы команда «оператор» или «меню» работала из любого места. Обратная сторона: если у вас есть ключевое слово «цена» в режиме «содержит», а бот в этот момент ждёт ответа на вопрос «Какой у вас бюджет?», ответ «не знаю, зависит от цены» запустит ветку с прайсом, и сбор данных прервётся. Откройте список ключевых слов и режим каждого: «содержит» ловит слово внутри любой фразы, «точно» — только сообщение целиком.

Решение. Для команд-переходов («меню», «оператор», «стоп») используйте режим «точно». Для тематических слов («цена», «доставка») — либо тоже «точно», либо более длинные фразы («сколько стоит»), которые редко встречаются в ответах на вопросы бота. Не заводите десятки ключевых слов: чем их больше, тем чаще они срабатывают случайно. Проверяйте в «Проверить сценарий»: дойдите до блока «Сбор данных» и введите ответ, содержащий ваши ключевые слова.

Причина 7. Диалог у оператора или стоит на паузе

Симптом. Бот молчит только для одного человека — чаще всего для вас самих или для коллеги, который тестировал вчера. Другие клиенты получают ответы.

Проверка. Откройте «Диалоги» и найдите эту переписку. Если у неё статус «Оператор» (вкладка «Ждут ответа»), бот замолчал по вашему же сценарию: сработал блок «Оператор», и теперь отвечать должен человек из кабинета — до тех пор, пока оператор не вернёт диалог боту. Второй вариант: сценарий дошёл до блока «Пауза» и ждёт — минуту, час или до завтрашнего утра, как настроено. С точки зрения клиента это выглядит одинаково: написал — тишина.

Решение. Диалог у оператора — ответьте из кабинета или верните его сценарию кнопкой «Вернуть боту» в «Диалогах». Чтобы такие диалоги не терялись, включите уведомления: звук и браузерные push в инбоксе и в «Аккаунт → Уведомления». Для пауз — проверьте, стоит ли перед длинной паузой сообщение «Напомню завтра в 10:00, а пока можете написать вопрос» и есть ли выход из паузы по ключевому слову. Как устроена передача человеку и что клиент видит в этот момент, разобрано в статье бот или оператор.

Причина 8. Telegram не доставляет: блокировка, первое сообщение, группы

Три ситуации, в которых бот всё делает правильно, а сообщение не доходит из-за правил самого Telegram.

Пользователь заблокировал бота. Симптом — в статистике рассылки часть получателей в графе «ошибки», Telegram отвечает «Forbidden: bot was blocked by the user». Проверять нечего: человек нажал «Заблокировать», и писать ему нельзя, пока он сам не разблокирует и не напишет снова. Решение — ничего не чинить; если ошибок много, пересмотрите частоту рассылок.

Бот пытается написать первым. Симптом — ошибки вида «chat not found» или PEER_ID_INVALID при рассылке или при отправке из внешней системы по контакту, которого бот не знает. Telegram запрещает боту начинать диалог: писать можно только тем, кто хоть раз написал боту сам. Проверка — есть ли этот человек в «Контактах» с каналом Telegram. Решение и обходные схемы — в отдельном разборе PEER_ID_INVALID и «бот не может написать первым».

Бот в группе не реагирует на обычные сообщения. Симптом — в личке отвечает, в группе молчит на всё, кроме команд. Причина — Group Privacy у BotFather: в этом режиме бот получает только команды со слэшем и сообщения с обращением к нему. Проверка — /mybots → Bot Settings → Group Privacy. Решение — либо выключить privacy mode (тогда бот будет читать всё в группе, о чём стоит предупредить участников), либо дать боту права администратора, либо обращаться к нему командами. Важно: сценарии ЧБТ рассчитаны на личный диалог с клиентом — сбор телефона и передача оператору в общем чате работают плохо, поэтому в группах от бота обычно ждут только ответов на команды.

Чеклист за три минуты

  1. Написали боту с нового аккаунта — сообщение появилось в «Диалогах»? Если нет, а бот ответил фразой о лимите, — сразу к третьему пункту.
  2. В «Каналах» статус «Работает», без текста ошибки под ним?
  3. Бот отвечает заглушкой про лимит? Тогда «Оплата»: тариф и счётчик диалогов за месяц.
  4. В «Обзоре» нужный сценарий — «Вкл», а черновики и копии — «Выкл»?
  5. Первый триггер сценария — «Команда /start»?
  6. Есть триггер «Любое сообщение» для текста без команды?
  7. Ключевые слова — в режиме «точно» или длинными фразами?
  8. Ваш собственный диалог не висит у оператора и не стоит на паузе?
  9. Если бота запускали в другом месте — старый код остановлен, webhook переустановлен?
  10. Проблема в группе — проверен Group Privacy?

Та же последовательность коротко — в справке «Бот в Telegram молчит: чеклист». Если бот работает и в MAX, причины 1 и 4–7 для него те же, а вместо токена BotFather проверяется токен из кабинета MAX — см. «Бот MAX молчит».

Большинство пунктов проверяются в кабинете за минуту — начните с «Диалогов» и «Каналов», а не с переписывания сценария. Если бота ещё нет, соберите его из шаблона в конструкторе ботов Telegram и пройдите чеклист до первого клиента: создать бота бесплатно →

Ещё в блоге