15 мар 2026
clock 8 минут

Создание Telegram-бота на Python с нуля

Python
Программирование

Telegram-бот — простой способ собрать рабочий backend-сервис. Вы работаете с API, обрабатываете события, храните состояние пользователя и настраиваете запуск на сервере.

Разберем, как создать Telegram-бота на Python: подключить Bot API, написать обработчики команд и сообщений и подготовить проект к продакшену.

Что такое Telegram-бот и зачем его создавать на Python

Telegram-бот — это программа внутри Telegram, которая отвечает пользователям и выполняет действия по заранее прописанной логике. Вместо человека бот принимает сообщения, обрабатывает их и возвращает результат.

Его используют для поддержки клиентов, отправки уведомлений, приема заявок, записи на услуги и интеграции с CRM или другими сервисами.

Когда пользователь нажимает кнопку или отправляет сообщение, Telegram передает это событие через Bot API вашему серверу или скрипту. Код обрабатывает запрос — например, проверяет команду, сохраняет данные или обращается к базе — и отправляет ответ обратно в чат.

Схема архитектуры Telegram-бота: пользователь отправляет сообщение в Telegram, запрос проходит через Bot API, обрабатывается Python-скриптом и возвращает ответ пользователю

Почему Python подходит для создания ботов

Python — один из самых удобных языков для разработки Telegram-ботов. Вот что это означает на практике.

  • Простой и читаемый синтаксис. Код на Python легко читать даже тем, кто только начинает программировать. 

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

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

  • Развитая экосистема. Если позже понадобится подключить базу данных, оплату или AI-модель — не придется менять язык или переписывать проект.

Telegram-бот на питоне пишется быстро. Обработчик команды — это обычная функция из нескольких строк.

Что нужно для создания Telegram-бота на Python

Потребуется минимальный набор инструментов:

1. Аккаунт Telegram

Нужен обычный пользовательский аккаунт. 

2. API-токен бота

Токен — это уникальный ключ, который связывает вашу программу с ботом.

Он выглядит так:

12353526233:AAE_example_token_string

3. Python

Для разработки подойдет Python 3.10+. 

4. Библиотека для работы с Telegram API

Для примера мы будем использовать python-telegram-bot — он закрывает большинство простых задач без лишнего кода. 

  • Обработка команд. Команда /start привязывается к конкретной функции. Когда пользователь вводит эту команду, библиотека автоматически вызывает нужный обработчик. Не нужно вручную проверять текст сообщения и сравнивать строки — это делает фреймворк.

  • Работа с кнопками. Можно добавлять обычные и inline-кнопки, а библиотека обработает нажатия и передаст их в нужный обработчик.

  • Прием сообщений. Любое текстовое сообщение, фото или другое событие можно отфильтровать и обработать через встроенные механизмы.

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

Регистрация бота в Telegram через BotFather

Разберемся, как написать бота на питоне для Telegram. 

Все боты создаются через официальный сервис Telegram — @BotFather.

Шаг 1. Найдите BotFather

В поиске Telegram введите:

@BotFather

Откройте чат и нажмите Start.

Шаг 2. Создайте нового бота

Введите команду:

/newbot

BotFather попросит:

  1. Указать название бота (отображаемое имя).

  2. Указать username бота — он должен заканчиваться на bot.

Например:

my_example_helper_bot

Шаг 3. Получите API-токен бота

После регистрации BotFather отправит сообщение с токеном.

Сохраните его — он понадобится для подключения к API.

На этом этапе бот уже существует, но не отвечает. Чтобы он начал работать, нужно написать код и запустить программу.

 BotFather в Telegram: создан тестовый бот PPSS_Python_bot и выдан API-токен для подключения к Bot API

Получение токена Telegram-бота через BotFather

Подготовка среды разработки

Теперь настроим окружение и установим библиотеку.

Установка Python

  • Windows и macOS — скачайте с официального сайта python.org

  • Linux — чаще всего Python уже установлен

Создание виртуального окружения

Виртуальное окружение изолирует зависимости проекта, чтобы версии библиотек для Telegram-бота на Python не конфликтовали с другими проектами.

python -m venv venv

Активируйте окружение:

Windows:

venv\Scripts\activate

macOS / Linux:

source venv/bin/activate

После активации в терминале появится префикс (venv). 

Установка библиотеки python-telegram-bot

В активированном окружении выполните:

pip install python-telegram-bot --upgrade

Проверьте установку:

pip list

Если библиотека отображается в списке — среда готова.

Создание простого Telegram-бота с нуля на Python

После регистрации бота и установки библиотеки напишите первый рабочий скрипт.

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

Создайте файл, например:

bot.py

Ниже — код для бота в Telegram на Python, который подключается по токену, обрабатывает команду /start и отвечает пользователю:

from telegram import Update

from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

TOKEN = "ВАШ_ТОКЕН_ВСТАВЬТЕ_СЮДА"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):

    await update.message.reply_text("Привет! Бот запущен и работает.")

def main():

    app = ApplicationBuilder().token(TOKEN).build()

    app.add_handler(CommandHandler("start", start))

    app.run_polling()

if __name__ == "__main__":

    main()

Запуск бота

Выполните в терминале:

python bot.py

Если ошибок нет — бот запущен.

Перейдите в Telegram, откройте своего бота и отправьте:

/start

Если все настроено правильно, бот ответит сообщением:

Привет! Бот запущен и работает.

Если ответа нет — проверьте токен и убедитесь, что скрипт запущен.

Добавление команд и логики обработки сообщений

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

Добавим команду /help

Обычно у бота есть команда помощи — она показывает, что он умеет.

Создайте функцию-обработчик сообщений:

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):

    await update.message.reply_text(

        "Доступные команды:\n"

        "/start — запуск бота\n"

        "/help — помощь"

    )

Затем зарегистрируйте ее в приложении:

app.add_handler(CommandHandler("help", help_command))

Теперь бот будет реагировать на команду /help и отправлять список доступных команд.

Так постепенно добавляется логика бота. Программирование бота в Telegram на Python — это работа с обработчиками: команды, текстовые сообщения и сценарии диалога.

Обработка обычного текста

Команды — это только часть логики. Чаще всего бот должен реагировать и на обычные сообщения.

Добавим обработчик текста:

from telegram.ext import MessageHandler, filters

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):

    user_text = update.message.text

    await update.message.reply_text(f"Вы написали: {user_text}")

Теперь зарегистрируем его:

app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))

После этого бот будет реагировать на любое текстовое сообщение.

В примере он просто повторяет текст пользователя — это быстрый способ проверить, что обработчик работает.

В реальном проекте вместо повторения текста вы добавляете бизнес-логику.

Работа с аргументами команды

Иногда команда может принимать дополнительные данные.

Например, пользователь может написать:

/start Иван

Слово после команды считается аргументом.

В библиотеке python-telegram-bot аргументы доступны через context.args. Это список слов, переданных после команды.

Пример обработчика:

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):

    if context.args:

        name = context.args[0]

        await update.message.reply_text(f"Привет, {name}!")

    else:

        await update.message.reply_text("Привет! Укажи имя после команды.")

Так можно передавать в команду параметры: имя пользователя, ID, код приглашения или другие данные.

Хранение состояния пользователя

Если бот ведет диалог из нескольких шагов, ему нужно помнить, на каком этапе находится пользователь. Например, сначала спросить имя, а потом сохранить его.

Для этого используется context.user_data — это словарь, который хранит данные конкретного пользователя между сообщениями.

Пример:

async def ask_name(update: Update, context: ContextTypes.DEFAULT_TYPE):

    await update.message.reply_text("Как тебя зовут?")

    context.user_data["step"] = "waiting_name"

async def handle_text(update: Update, context: ContextTypes.DEFAULT_TYPE):

    if context.user_data.get("step") == "waiting_name":

        context.user_data["name"] = update.message.text

        await update.message.reply_text(f"Приятно познакомиться, {update.message.text}!")

        context.user_data.clear()

Как запустить Telegram-бота на Python

Есть два режима работы Telegram-бота:

  1. Локально — для разработки и проверки логики.

  2. На сервере — для постоянной работы.

Локальный запуск

На этапе разработки бот обычно запускают на своем компьютере.

В терминале выполните:

python bot.py

После этого бот начинает получать сообщения через polling — он регулярно запрашивает обновления у Telegram и отвечает на них.

Бот работает только пока запущен скрипт. Если закрыть терминал или выключить компьютер, он перестанет отвечать. 

Это обязательный этап создания Telegram-бота на питоне с нуля. Сначала вы проверяете все локально, а уже потом переносите проект на сервер.

Постоянный режим работы

Если бот должен отвечать пользователям в любое время, его нужно разместить на сервере. В этом случае он работает круглосуточно и не зависит от вашего компьютера.

При таком запуске:

  • бот доступен 24/7;

  • пользователи получают ответы без задержек;

  • при сбое процесс можно настроить на автоматический перезапуск.

Бот работает в режиме polling или webhook. Polling проще в настройке — подходит для обучения и небольших проектов. Webhook используют в продакшене: он требует HTTPS, но лучше масштабируется.

Схема архитектуры Telegram-бота на Python: код приложения, библиотека python-telegram-bot, Telegram Bot API, сервер и хранение данных

Тестирование и отладка Telegram-бота

Даже самый простой Telegram-бот на питоне может не отвечать из-за мелкой ошибки. Чаще всего проблема не в логике, а в настройке окружения или обработчиков.

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

Использование логирования

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

Минимальная настройка выглядит так:

import logging

logging.basicConfig(

    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",

    level=logging.INFO

)

После этого бот будет выводить в консоль служебные сообщения о своей работе.

С логами вы видите, на каком этапе возникла проблема, и можете быстрее ее исправить.

Обработка ошибок

Если внутри обработчика возникает исключение, бот может остановиться или перестать корректно отвечать. Добавьте обработчик ошибок — иначе исключение внутри хендлера может остановить бота.

Пример:

async def error_handler(update, context):

app.add_error_handler(error_handler)

Теперь, если в любом обработчике произойдет ошибка, она будет зафиксирована, а бот продолжит работу.

Размещение Telegram-бота на сервере

Когда разработка завершена и бот протестирован локально, его нужно перенести на сервер, чтобы он работал постоянно.

Способ размещения зависит от задач и нагрузки: 

VPS — это обычный удаленный сервер. Вы подключаетесь к нему, устанавливаете Python, копируете проект и запускаете бота. Это простой вариант для небольших проектов с polling: минимум инфраструктуры, полный контроль над настройками.

Облачный сервер выбирают, когда бот растет и нужна гибкость. В облаке можно быстро увеличить ресурсы, настроить HTTPS и webhook, обеспечить стабильную работу при высокой нагрузке. Такой вариант подходит, если бот — часть более крупного сервиса.

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

Автозапуск нужен в любом случае. Если сервер перезагрузится или процесс упадет, бот должен стартовать сам. Для этого настраивают systemd, supervisor или встроенные инструменты облака. Без автозапуска сервис будет периодически отключаться.

Безопасность и лучшие практики при создании Telegram-бота

Безопасность — это базовая часть работы. Даже если вы делаете простой Telegram-бот на Python, лучше сразу настроить все аккуратно, чтобы потом не разбираться с утечками токена и ошибками доступа.

Не храните токен в коде

Токен — это ключ к вашему боту. Если он попадет в открытый репозиторий, ботом сможет управлять кто угодно. Надежнее хранить токен в переменных окружения и получать его в коде через os.getenv(). Так секретные данные не оказываются в файлах проекта.

Ограничивайте доступ

Не публикуйте токен и не передавайте его третьим лицам. Файлы с конфигурацией и секретами лучше исключить из репозитория. Если вы используете webhook, настройте HTTPS — без него Telegram не будет отправлять события безопасно.

Логируйте аккуратно

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

Структурируйте проект

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

Заключение

Создание чат бота в Telegram на Python — один из тех проектов, где результат виден сразу. Написал код, открыл Telegram, проверил. Это и делает его хорошей точкой входа в backend-разработку.

Если вы хотите глубже разобраться в том, как такие проекты проектируются и поддерживаются, важно понимать не только сам код, но и архитектуру, тестирование и командную работу.

Программы ProductStar по frontend- и backend-разработке построены так, чтобы вы не просто изучали инструменты, а сразу применяли их в контексте реальных проектов. Вы научитесь настраивать окружение, работать в Git, проектировать архитектуру и решать практические задачи — так же, как это делают в продуктовых командах.

С актуальными курсами можно ознакомиться в каталоге на сайте ProductStar.

Поделиться
star1

Вам может также понравиться

Tableau: обзор программы, возможности и принципы работы
Аналитика
Tableau: обзор программы, возможности и принципы работы
Kanban: полное руководство по методологии визуального управления проектами
Менеджмент
Kanban: полное руководство по методологии визуального управления проектами
Топ нейросетей для генерации схем, диаграмм и графиков
Разное
Топ нейросетей для генерации схем, диаграмм и графиков
Производные: учимся измерять скорость изменения функции
Разное
Производные: учимся измерять скорость изменения функции
star2

Курсы, которые выбирают чаще всего