10 уроков
💬

Телеграм-боты на Python

Бот от первого ответа до работы на сервере

Телеграм-бот на Python и aiogram: как устроен Bot API, обработчики и фильтры, клавиатуры и кнопки, диалог с состояниями, структура проекта, база данных, ошибки и лимиты, запуск на сервере.

Задание ниже на этой же странице. Ничего заполнять не нужно.

10уроков с домашней работой к каждому
111заданий с проверкой в браузере
0 ₽за первый уровень курса
6,5 часастолько уходит на уровень
Первый урок · без регистрации Урок 1 · «Как устроен бот: Bot API, токен, обновления» — с него начинается курс 3 минуты

Бот — это программа

Телеграм-бот кажется собеседником, который живёт внутри мессенджера. На самом деле бот — это ваша программа, которая работает на вашем компьютере или сервере, а Телеграм только передаёт ей сообщения и доставляет ответы. Этот простой факт объясняет почти все первые недоумения: почему бот молчит, когда закрыт ноутбук, почему «забыл» всё после перезапуска и почему двое одновременно запущенных ботов ругаются друг на друга.

Человекв приложенииТелеграмBot APIВаша программана компьютересообщение идёт вправо, ответ — влевовыключили программу — бот молчит
Человек пишет не боту, а Телеграму. Телеграм хранит сообщение и отдаёт его программе по запросу; ответ программа тоже отправляет через Телеграм.

Разговор с Телеграмом идёт через Bot API — набор адресов, по которым программа делает обычные интернет-запросы: «дай новые сообщения», «отправь текст в такой-то чат», «покажи кнопки». Каждый такой запрос — это вызов метода: getUpdates, sendMessage, sendPhoto и десятки других. Программа на любом языке может вызывать их напрямую, но так быстро становится неудобно: нужно разбирать ответы, повторять запросы после сбоев, следить за порядком.

Поэтому пишут на библиотеке. В этом курсе это aiogram третьей версии — одна из самых распространённых библиотек для ботов на Python. Она берёт на себя разговор с Bot API и даёт удобный язык: «когда придёт команда /start — сделай вот это». Но под ней по-прежнему те же запросы, и знать, что происходит внизу, полезно: когда что-то сломается, сообщение об ошибке придёт именно от Bot API.

Отсюда первое правило работы с ботами: бот отвечает, только пока работает программа. Пока вы учитесь, программа запущена у вас на компьютере; закрыли крышку — бот замолчал. Сообщения, пришедшие за это время, Телеграм сохранит и отдаст, когда программа снова спросит, — но не навсегда, об этом ниже. Чтобы бот отвечал круглые сутки, программу переносят на сервер; это тема последнего урока.

Весь урок целиком →

Задание из урока 2

Где поставить обработчик без условия @dp.message()?

  • Карту не спрашиваем ни на каком шаге
  • Прогресс хранится в аккаунте — с телефона и с компьютера одинаково
  • Через 2, 7 и 30 дней курс сам вернёт задания, чтобы выученное не забылось
  • Письма — только о ваших занятиях, отписка одной кнопкой
Программа курса 1 уровень · 10 уроков · контрольная уровня с сертификатом

Программа

Уровень 1 — от первого ответа до сервера 10 уроков · контрольная на 26 заданий
01
Как устроен бот: Bot API, токен, обновления

Понимать, что бот — это программа, которой Телеграм передаёт сообщения через Bot API; регистрировать бота у BotFather и обращаться с токеном как с паролем; знать, что всё приходит обновлениями с номерами и хранится около суток; выбирать между опросом и вебхуком и не запускать две программы с одним токеном.

около 20 минут · домашняя работа
02
Первый бот: Bot, Dispatcher и async

Готовить проект в своём виртуальном окружении; понимать роли Bot, Dispatcher и обработчика в минимальном боте; писать асинхронные обработчики с await и не блокировать бота обычным ожиданием; знать, что обработчики проверяются сверху вниз, проверять наличие текста и перезапускать бота после правки.

около 18 минут · домашняя работа
03
Обработчики и фильтры

Ловить команды и их аргументы; отбирать сообщения волшебным фильтром F по тексту и виду, сочетая условия через &, | и ~; различать человека (from_user) и чат (chat), понимать режим приватности в группах; ставить частные обработчики выше общих, держать страховку в конце и проверять доступ по номеру.

около 20 минут · домашняя работа
04
Ответы: текст, оформление, фото

Выбирать между answer, reply и send_message и понимать, когда нет входящего сообщения; оформлять ответы в режиме HTML и экранировать всё, что прислал человек; держаться пределов длины и не засыпать чат сообщениями, показывать работу над долгим ответом; отправлять фото по file_id и принимать присланные фото и подписи.

около 19 минут · домашняя работа
05
Клавиатуры и кнопки

Различать обычную клавиатуру (нажатие — текст) и встроенную (нажатие — callback с данными); строить главное меню и кнопку телефона; ловить нажатия встроенных кнопок, отвечать callback.answer() и менять сообщение; держать данные кнопки в 64 байтах латинскими кодами «приставка:номер»; собирать клавиатуры построителем и проверять данные кнопок как ввод человека.

около 20 минут · домашняя работа
06
Диалог с состояниями

Понимать, зачем шаг диалога хранится для каждого человека отдельно; описывать шаги группой состояний, переводить между ними и ловить ответы фильтром состояния; собирать данные, проверять ответы и оставлять человека на шаге при ошибке, очищать состояние в конце и давать выход /cancel; выбирать хранилище: память для учёбы, Redis для рабочего бота, итоги — в базу.

около 19 минут · домашняя работа
07
Проект: роутеры, файлы и секреты

Раскладывать обработчики по роутерам и подключать их в правильном порядке; держать проект по файлам тем без циклических импортов; хранить токен и настройки в .env, читать их через os.getenv с проверкой при запуске и не пускать секреты в репозиторий; вести тестового двойника бота, requirements.txt и README.

около 18 минут · домашняя работа
08
Данные: SQLite в боте

Понимать, почему итоги работы бота хранят в базе, а не в памяти, состоянии или файле; создавать таблицы при запуске и задавать правила в самой базе (UNIQUE вместо проверки в коде); писать запросы только с параметрами, сохранять изменения и обрабатывать занятое время; держать SQL в одном файле, знать, когда нужен aiosqlite, и делать проверенные копии.

около 19 минут · домашняя работа
09
Ошибки и лимиты

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

около 20 минут · домашняя работа
10
Бот на сервере

Выбирать VPS с Linux и запускать бота от отдельного пользователя; переносить бота на сервер: код из репозитория, секреты отдельно, пробный запуск и остановка локальной копии; описывать службу systemd с автозапуском и перезапуском, пользоваться status и journalctl; обновлять из коммита с проверкой и откатом, присматривать за ботом и понимать, когда нужен вебхук.

около 19 минут · домашняя работа
Кому как объяснять тема одна, различаются примеры и язык

Начало урока «Как устроен бот: Bot API, токен, обновления» — нажмите подачу и посмотрите, как это написано для вас

Базовая подача Так урок написан для всех, пока подача не выбрана.

Телеграм-бот кажется собеседником, который живёт внутри мессенджера. На самом деле бот — это ваша программа, которая работает на вашем компьютере или сервере, а Телеграм только передаёт ей сообщения и доставляет ответы. Этот простой факт объясняет почти все первые недоумения: почему бот молчит, когда закрыт ноутбук, почему «забыл» всё после перезапуска и почему двое одновременно запущенных ботов ругаются друг на друга.

Как устроен урок. Урок — одна страница: главы подряд, внутри них встроенная практика, в конце итог и домашняя работа. Порог 70%, пересдача через сутки новым набором.

Сертификат. За сданную контрольную уровня — именной, с кодом проверки подлинности; от 95% с отличием.

Пересдача и возвращения. Домашнюю можно пересдать через сутки другим набором, а через два дня, неделю и месяц курс сам предложит четыре коротких задания из того же урока.

Частые вопросы
Сколько занимает курс «Телеграм-боты на Python»?

Уровень 1 — это 10 уроков примерно на 6,5 часа вместе с домашними работами и контрольной. Заниматься можно в любом темпе: прогресс сохраняется.

Нужно ли платить?

За первый уровень — нет: его уроки, домашние работы, контрольная и сертификат открыты бесплатно. Регистрация нужна только для того, чтобы сохранялся прогресс.

С чего начать, если я ничего не знаю о теме?

С первого уровня: он написан с нуля и не требует подготовки. Уровни — это глубина, а не точка входа: второй продолжает первый без повторов.

Что такое подача и какую выбрать?

Подача меняет примеры и язык объяснения, а не тему урока: Знаю основы Python, Бот для дела, Разработчик. Выбрать можно при первом заходе и сменить в любой момент.

Как проверяются задания?

Каждое задание проверяет сервер: ответы не хранятся в браузере, а разбор приходит после ответа. Домашняя работа — 7 заданий из банка, порог 70%, пересдача через сутки новым набором.

Есть ли сертификат?

Да. За сданную контрольную уровня выдаётся именной сертификат с кодом проверки подлинности; от 95% — с отличием. Проверить код может любой на странице /check.

Дальше — весь курс с сохранением прогресса

Регистрацию можно отложить: первые уроки открыты целиком, а прогресс появится, как только заведёте аккаунт.

Зарегистрироваться