Создание Telegram-бота на Python с нуля
Что нужно для старта, как выглядит минимальный бот, какие первые команды стоит сделать, как его запустить и что добавлять дальше по порядку.
Все статьи гида Telegram-боты · 13
Первый бот собирается за вечер. Разберём минимально необходимое и порядок, в котором стоит наращивать.
Что нужно
- Python достаточно свежей версии.
- Токен от BotFather - см. получение токена.
- Библиотека. Для Python это обычно aiogram.
- Виртуальное окружение. Не обязательно, но избавляет от конфликтов зависимостей позже.
Сервер на этом этапе не нужен: бот сам обращается к серверам Telegram, входящие соединения ему не требуются.
Минимальный бот
Структура минимального бота одинакова у всех библиотек:
- Прочитать токен из переменной окружения.
- Создать объект бота и диспетчер.
- Описать обработчик - функцию, которая срабатывает на событие и отвечает.
- Подключить обработчик к диспетчеру.
- Запустить получение обновлений.
Всё это укладывается в несколько десятков строк. Что важно сделать правильно с самого начала:
Токен из окружения, а не из кода. Привычка, которая потом сэкономит перевыпуск токена.
Обработчик отвечает на команду старта. Это первое, что нажмёт любой пользователь, и бот, молчащий на неё, выглядит сломанным.
Асинхронность. Современные библиотеки асинхронные, и синхронный вызов внутри обработчика подвесит весь бот. Об этом легко забыть на первом боте и потом долго искать причину.
Первые команды
Минимальный полезный набор:
- Старт. Приветствие и объяснение, что бот умеет. Одно предложение лучше пустого ответа.
- Помощь. Что делать, если непонятно.
- Отмена. Выход из любого сценария. Понадобится сразу, как появятся вопросы подряд.
Команды стоит зарегистрировать у BotFather: они появятся в меню, и пользователи перестанут спрашивать, что бот умеет.
Запуск
При разработке бот запускается на вашей машине в режиме опроса: он сам спрашивает у Telegram новые сообщения. Ничего настраивать не нужно.
Частая проблема: два запущенных экземпляра с одним токеном. Сообщения достаются то одному, то другому, и поведение выглядит случайным. Если бот отвечает через раз - проверьте, не запущен ли он ещё где-то, включая забытый терминал.
Для постоянной работы нужен сервер и автозапуск, чтобы бот поднимался после перезагрузки и после падения. Это разобрано отдельно: деплой и эксплуатация.
Что добавлять дальше
Порядок, который не приводит к переписыванию:
- Кнопки вместо ввода текста. Резко упрощает жизнь пользователю.
- Разделение на файлы, как только обработчиков становится больше десятка - см. структуру на aiogram.
- База данных. Как только появляется что-то, что нужно помнить между сообщениями.
- Состояния диалога. Когда появляются вопросы подряд.
- Обработка ошибок и логи. До того, как показывать пользователям.
- Платежи, если бот продаёт.
Чего не стоит делать на старте: сразу проектировать всё. Первый бот полезнее сделать маленьким и запустить, чем месяц проектировать архитектуру для функций, которые могут не понадобиться.
Обзор - гид по Telegram-ботам.
Вопросы и ответы
Что нужно, чтобы сделать своего Telegram-бота?
Установленный Python, токен от BotFather и библиотека для работы с ботами. Минимальный работающий бот - это несколько десятков строк. Всё остальное - база, состояния, платежи - добавляется потом, когда становится нужно.
Почему бот запускается, но не отвечает?
Три причины по частоте: не тот токен, обработчик не подключён к диспетчеру, и бот запущен где-то ещё - два процесса с одним токеном конфликтуют, и сообщения достаются то одному, то другому. Последнее особенно коварно при отладке.
Нужен ли сервер, чтобы попробовать?
Нет, для разработки достаточно своего компьютера: бот сам обращается к серверам Telegram, входящих соединений не требуется. Сервер нужен, когда бот должен работать постоянно, а не пока открыт ноутбук.
Ещё по теме
- Telegram-боты на Python: полный практический гидГид
- Кнопки в Telegram-боте: обычные и инлайнЧем обычная клавиатура отличается от инлайн-кнопок, когда какая нужна, как обрабатывать нажатия и почему обязательно подтверждать callback.
- Конструкторы Telegram-ботов против кода: что выбратьКакие задачи закрывают конструкторы ботов, где они упираются в потолок, из чего складывается стоимость владения и как выбрать между конструктором и кодом.
- Оплата в Telegram-боте: приём платежей по шагамКакие есть способы принимать оплату в боте, чем они отличаются, как обрабатывать подтверждение платежа и почему идемпотентность здесь обязательна.
Сделаю под ключ
Сделаю Telegram-бота под ваш процесс
Заявки, оплата, выдача доступа, рассылки и воронка в одном боте, с админкой для вас.
от 300 $ · 3-7 дней
«Действительно гуру своего дела. Узнал массу новой и полезной информации по телеграм рассылкам. До этого сжег очень много денег на оплате услуг посредников, но после общения с исполнителем буду делать все сам)»