Бот молчит? Чиним

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

После урока сможешь: объяснить тему «Бот молчит? Чиним» и выполнить связанный с ней учебный шаг без подсказки.

Разберём семь самых частых причин «бот не отвечает». В девяти случаях из десяти дело в одной из них.

Причина 1: программа не запущена

Самое частое. Бот живёт, только пока работает программа. Закрыл редактор, выключил ноут, нажал Ctrl+C, и бот замолчал. Проверь: программа сейчас точно запущена и в терминале «крутится»? Если нет, просто запусти заново.

Причина 2: ошибка в токене

Если при запуске вылетает ошибка про токен или «Unauthorized», значит токен неверный. Частые ляпы: лишний пробел, потерял пару символов, вставил не туда. Зайди к @BotFather, скопируй токен заново целиком и аккуратно вставь в config.py без пробелов по краям.

Причина 3: опечатка в обработчике

Программа запускается, но бот не реагирует. Тогда смотри на обработчики. Частая беда: опечатка в строчке с табличкой-обработчиком. Например, написано mesage_handler вместо message_handler, потеряна буква. Сверь свою строчку с рабочим примером из прошлого урока, буква в букву.

Причина 4: забыли запустить поллинг

Если в самом низу файла нет строки bot.infinity_polling(), программа пройдёт сверху вниз и закончится. Бот даже не начнёт слушать сообщения. Проверь, что эта строка есть и стоит последней.

Причина 5: сломанные отступы

Python строгий к отступам. Если строки внутри функции не сдвинуты вправо или сдвинуты вкривь, программа выдаст ошибку про отступ (IndentationError). Глянь, что всё внутри def аккуратно сдвинуто на один уровень.

Причина 6: поправил код, но не перезапустил

Ты нашёл ошибку, исправил строчку, сохранил файл. А бот всё равно ведёт себя по-старому. Будто не слышит.

Дело вот в чём. Python читает твой файл один раз, в момент запуска программы. Дальше бот работает по той версии, что была на старте. Ты меняешь файл, но запущенный бот про это не знает: он крутится со старым кодом в памяти.

Лечится просто. Нажми Ctrl+C в терминале, чтобы остановить бота. Потом запусти файл заново. Теперь он работает по свежему коду.

Это самая частая «магия» у новичков: «я же исправил, а он не слушается». Возьми за привычку: поправил код, перезапусти. Каждый раз.

Причина 7: запущены две копии бота

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

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

Telegram такого не любит. Он пускает к боту только одного «слушателя». Когда их двое, вылетает красная ошибка со словом Conflict (по-русски «конфликт») или строчка 409: terminated by other getUpdates. Это как один телефон и две трубки: снял вторую, первая захрипела.

Что делать. Закрой все лишние запуски: нажми Ctrl+C в каждом окне терминала, где крутится бот. Оставь ровно один. Залипание пройдёт.

Как читать красную ошибку

Когда программа падает, не зажмуривайся. Внизу будет красный текст, и самая нижняя строка обычно говорит главное. IndentationError значит беда с отступами. Unauthorized значит неверный токен. Имя с опечаткой даст NameError. Ошибка часто прямо называет номер строки, где споткнулась. Иди туда и смотри.

Если совсем непонятно, скопируй последнюю строку ошибки и поищи в интернете. Это не читерство, так делают все программисты каждый день.

Задание. Возьми файл с ошибкой из материалов урока (бот запускается, но молчит). Найди причину, назови её словами и почини. После правки бот должен отвечать. Потом прокачай Бот-Эхо: пусть на слово «привет» в любом виде он отвечает по-особенному, а всё остальное по-прежнему повторяет.

Подсказка: Сначала проверь, есть ли в самом низу строка bot.infinity_polling(). Для «привет» добавь отдельный обработчик ВЫШЕ эхо.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Зачёт, если:
✅ причина, почему бот молчал, названа словами и исправлена — бот снова отвечает;
✅ на слово «привет» в любом виде бот отвечает по-особому, остальное по-прежнему повторяет;
✅ проверено на твоём боте.

Контрольный вопрос. Почему бот перестаёт отвечать, когда ты закрыл программу на компьютере?

АПока программа не запущена, некому забирать сообщения и отвечать
БTelegram удалил бота
ВЗакончился токен

Подсказка: Вспомни, кто именно спрашивает у Telegram про новые сообщения.

Онлайн-проверка ответа появится позже

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева