Бот — это программа
Телеграм-бот кажется собеседником, который живёт внутри мессенджера. На самом деле бот — это ваша программа, которая работает на вашем компьютере или сервере, а Телеграм только передаёт ей сообщения и доставляет ответы. Этот простой факт объясняет почти все первые недоумения: почему бот молчит, когда закрыт ноутбук, почему «забыл» всё после перезапуска и почему двое одновременно запущенных ботов ругаются друг на друга.
Разговор с Телеграмом идёт через Bot API — набор адресов, по которым программа делает обычные интернет-запросы: «дай новые сообщения», «отправь текст в такой-то чат», «покажи кнопки». Каждый такой запрос — это вызов метода: getUpdates, sendMessage, sendPhoto и десятки других. Программа на любом языке может вызывать их напрямую, но так быстро становится неудобно: нужно разбирать ответы, повторять запросы после сбоев, следить за порядком.
Поэтому пишут на библиотеке. В этом курсе это aiogram третьей версии — одна из самых распространённых библиотек для ботов на Python. Она берёт на себя разговор с Bot API и даёт удобный язык: «когда придёт команда /start — сделай вот это». Но под ней по-прежнему те же запросы, и знать, что происходит внизу, полезно: когда что-то сломается, сообщение об ошибке придёт именно от Bot API.
Отсюда первое правило работы с ботами: бот отвечает, только пока работает программа. Пока вы учитесь, программа запущена у вас на компьютере; закрыли крышку — бот замолчал. Сообщения, пришедшие за это время, Телеграм сохранит и отдаст, когда программа снова спросит, — но не навсегда, об этом ниже. Чтобы бот отвечал круглые сутки, программу переносят на сервер; это тема последнего урока.