Пишем чат-бота на Python: с чего начать и как сделать первый бот

Создание чат-ботов — это уже не только про гиков и стартапы. Сегодня Telegram-боты запускают онлайн-школы, врачи, магазины и даже психологи. А с чего начать, если вы только начинаете путь в программировании?
Хорошая новость: создать чат-бот на Python можно за пару часов. Это простой, популярный язык с готовыми библиотеками и большим сообществом. А Telegram идеально подходит для старта: не нужен интерфейс, всё уже встроено в мессенджер.
В этой статье — пошаговая инструкция: как установить Python, получить токен, написать код, запустить и улучшить бота. Всё — максимально понятно и без лишней теории.
Почему Python — один из лучших языков для чат-ботов

Python — это язык программирования, который легко читается и так же легко пишется. Его выбирают не только новички, но и разработчики крупных проектов — от веб-сервисов до систем с искусственным интеллектом. Для создания чат-ботов у него есть сразу несколько сильных сторон:
1. Прост в изучении, читается как английский
Синтаксис Python интуитивно понятен: нет лишних скобок, сложно читаемых конструкций или запутанных операторов. Например, чтобы вывести сообщение, достаточно написать print(«Привет») — никаких кавычек в три ряда или System.out.println, как в других языках. Поэтому с ним легко начать, даже если ты только открываешь мир программирования.
2. Много готовых инструментов под Telegram
Под Telegram существует несколько отличных библиотек для Python:
- python-telegram-bot — простой и надёжный инструмент, который используем в статье
- aiogram — асинхронная библиотека, идеально подходит для сложных и быстрых ботов
- telebot (pyTelegramBotAPI) — альтернатива, которая подойдет для базовых проектов
Эти библиотеки берут на себя всю “сложную” работу с Telegram API. Благодаря этому, вам не нужно разбираться, как устроены запросы, авторизация, форматы сообщений — вы просто пишете: «если пользователь нажал кнопку — отправить ответ», и это работает.
3. Большое и отзывчивое сообщество
Python — один из самых популярных языков в мире, и у него огромное сообщество. Это значит, что:
- Есть русскоязычные Telegram-чаты, блоги и даже видеоуроки по нужной библиотеке
- На StackOverflow уже есть готовые ответы почти на все типичные ошибки
- В GitHub можно найти десятки примеров ботов
Если что-то не получается, то наверняка кто-то уже сталкивался с этим раньше и нашёл решение.
4. Гибкость: можно начать с простого, а потом добавить “умный” функционал
Огромный плюс Python — в его масштабируемости. Сегодня вы запускаете простого Telegram-бота, а через неделю можете подключить к нему:
- API погоды, курсов валют, расписаний и прочих сервисов
- Базу данных для хранения информации
- Нейросеть для анализа текста или голосовых сообщений
- Визуальный интерфейс (через Mini App) или автоматические рассылки
И всё это — на том же языке, без необходимости переписывать код с нуля.
Где может работать бот на Python, кроме Telegram

Хотя в этой статье мы сосредоточимся на Telegram, важно понимать: бот на питоне это не что-то уникальное для одного мессенджера. На самом деле, Telegram, просто одна из удобных «оболочек» для общения, но сам бот на питоне это универсальный механизм, который можно использовать в разных средах.
Вот где ещё можно запускать чат-ботов на Python:
Telegram — лучший старт
- Не нужен интерфейс — всё уже есть в мессенджере.
- Нет регистрации и логинов.
- Библиотеки легко подключаются к Telegram API.
- Пользователи привыкли к ботам.
- Разработка бота Telegram занимает минимальное время.
Discord — для сообществ и игр
- Пишется с помощью discord.py
- Подходит для автоответов, модерации, оповещений, интеграций
- Обрабатывает команды (!help, !roll) и может работать с голосом
- Идеален для хакатонов, геймерских и dev-сообществ
Slack — для рабочих процессов
- Используется в командах и офисах
- Реализует уведомления, команды, формы, мини-опросы
- Библиотека slack_sdk позволяет интеграции с GitHub, Trello, Notion
- Часто применяется как внутренняя автоматизация
WhatsApp — через платные шлюзы
- Нет открытого API, нужны платформы: Twilio, Gupshup, 360dialog
- Подходит для напоминаний, заказов, консультаций
- Требуется бизнес-аккаунт, одобренный номер и бюджет
- Для новичков — сложно, но реально
Веб-сайты и Mini App
- Форма-чаты на сайте через Flask/Django
- AI-ассистенты с подключением к NLP-моделям (например, ChatGPT)
- Mini App — полноценный интерфейс в Telegram, с кнопками, формами и оплатой
- Такие решения подходят, если бот работает в связке с сайтом, базой или внешним API
Вывод
Telegram — лучший выбор для первого проекта: не нужен сайт, фронтенд или сервер. Всё работает в одном окне, и запуск занимает всего пару часов. Но Python не ограничивается Telegram — вы можете развивать бота дальше: использовать в Discord, Slack, WhatsApp или на сайте.
Что нужно для старта
Чтобы приступить к созданию Python Telegram bot, не нужно ничего сверхъестественного — достаточно нескольких шагов подготовки.
- Установите Python
Перейдите на официальный сайт python.org/downloads и скачайте последнюю версию Python.
После установки проверьте, что всё работает: python —version
- Установите pip и создайте виртуальное окружение
Виртуальное окружение позволяет изолировать зависимости вашего проекта.
Создание окружения: python -m venv venv
- Активация:
Windows: venv\Scripts\activate
Mac/Linux: source venv/bin/activate
- Обновление pip: python -m pip install —upgrade pip
- Установите библиотеку для Telegram-бота
Мы будем использовать python-telegram-bot — мощную и простую библиотеку.
Установка: pip install python-telegram-bot —upgrade
Позже можете заменить её на aiogram или telebot
Простой Telegram-бот шаг за шагом
Шаг 1. Получаем токен от @BotFather

Чтобы Telegram “разрешил” вашему боту работать, ему нужен токен доступа. Это уникальный ключ, с которым Python-бот сможет подключиться к Telegram API. Получить токен можно через официального бота Telegram — @BotFather.
Вот пошаговая инструкция:
- Откройте Telegram и найдите @BotFather (можно в поиске)
- Нажмите Start или введите команду /start
- Введите команду /newbot — начнется создание нового бота
- Укажите:
- Имя бота (отображается в чате, например: Помощник Питон)
- Username — должен оканчиваться на bot, например: pythonhelper_bot
- BotFather пришлет вам токен — строку вида:
123456789:AAAbbbCccDDD-EEEfffGgg-HHHiiiJjj
Сохраните токен — это ваш “пароль” для подключения из кода. Без него бот не заработает.
Шаг 2. Устанавливаем и подключаем библиотеку
Для работы с Telegram мы используем библиотеку python-telegram-bot — она официально поддерживается и идеально подходит для начинающих.
Установите ее командой: pip install python-telegram-bot —upgrade
Проверьте, что установка прошла успешно, и переходите к написанию кода.
Шаг 3. Пишем первого бота

Создайте файл, например bot.py, и вставьте следующий код:
from telegram import Update, ReplyKeyboardMarkup
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
keyboard = [["Помощь", "О сайте"], ["Контакт", "Закрыть"]]
reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
await update.message.reply_text("Выберите действие:", reply_markup=reply_markup)
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Я могу ответить на команду /start и /help!")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(f"Вы сказали: {update.message.text}")
app = ApplicationBuilder().token("ВАШ_ТОКЕН").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()
Замените «ВАШ_ТОКЕН» на тот, который вы получили от @BotFather.
Шаг 4. Запускаем бота
Теперь запустим скрипт:
- Убедитесь, что активировано виртуальное окружение (если вы его используете).
- Выполните команду: python bot.py
- Откройте Telegram, найдите своего бота по username и отправьте команду: /start
- Бот должен прислать меню с кнопками. Попробуйте ввести текст — он его повторит.
Что делать, если бот не отвечает?
- Убедитесь, что токен вставлен правильно (без пробелов, кавычек и т.д.).
- Проверьте, не завершилась ли работа скрипта — посмотрите на ошибки в терминале.
- Убедитесь, что вы пишете тому боту, чей токен вы используете.
Поздравляем! Вы только что создали своего первого Telegram-бота на Python. Он умеет:
- Реагировать на команды
- Повторять текст
- Показывать кнопки в меню
Далее вы сможете легко добавить в него новые команды, подключить API, базу данных и т.д.
Улучшаем бота: делаем его умнее и полезнее

После запуска и подключения токена бот не просто «оживает», а уже умеет выполнять полезные действия. Вы реализовали не голую оболочку, а основу полноценного Telegram-бота, который реагирует на команды, понимает обычный текст и умеет работать с кнопками. Давайте подробно разберем, что именно появилось в коде, зачем это нужно и как это может пригодиться.
Команды: понятный способ общения
В Telegram команды — это то, с чего начинается почти каждый бот. Вы уже подключили две:
- /start — приветствие и запуск бота;
- /help — подсказка с тем, что бот умеет.
Это простая и привычная механика: команда — это как «вызов действия». Пользователь вводит /start — бот реагирует, запускает сценарий, показывает кнопки. /help работает как справка: неважно, когда человек вернулся к боту, он всегда может напомнить себе, что делать.
В чём польза:
- Команды — это точка входа
- Их можно добавить сколько угодно: /контакты, /о_нас, /статус, /меню
- Они структурируют работу: каждой команде — отдельная функция
Пример (уже реализовано в коде):
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
Позже вы можете расширить этот список без особых усилий.
Ответ на текст: бот понимает, что вы пишете
Большинство людей в мессенджерах не любят вводить команды со слэшами. Они просто пишут:
- Привет
- Где вы находитесь?
- Как оформить заказ?
Именно поэтому в коде подключена отдельная функция echo() — она реагирует на любой текст, который не является командой. Сейчас бот просто повторяет сообщение пользователя. Это базовое поведение, но очень полезное.
В чём польза:
- Это основа для обработки обычных сообщений
- Функцию echo() легко заменить на поиск, FAQ или ИИ-ответ
- Можно настроить реакции на ключевые слова, например “доставка”
Пример (уже реализовано в коде):
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
Эта строка — настоящий “уловитель текста”. Вы можете его перенастроить на любые сценарии.
Кнопки: удобное меню прямо в чате
Когда пользователь запускает /start, он видит не просто текст, а четыре кнопки:
“Помощь”, “О сайте”, “Контакт”, “Закрыть”.
Это реализовано с помощью встроенной клавиатуры Telegram — ReplyKeyboardMarkup.
Зачем это нужно:
- Не нужно набирать текст — достаточно нажать
- Особенно удобно для мобильных пользователей
- Кнопки — это навигация по боту, как меню на сайте
Фрагмент кода:
keyboard = [["Помощь", "О сайте"], ["Контакт", "Закрыть"]]
reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
Кнопки пока только отправляют текст, но их легко обработать — можно добавить условия:
if update.message.text == "Контакт":
await update.message.reply_text("Наш e-mail: info@example.com")
Бот будет понимать, какую кнопку нажали, и отвечать соответствующим сообщением. Это логика, которая легко расширяется до полноценного сценария.
Что можно сделать дальше
На этом этапе у вас уже не просто заготовка, а минимальный, но рабочий Telegram-бот. Всё, что вы добавите — будет логичным продолжением:
- Подключение внешних API (например, погода, курс валют)
- Ответы на конкретные фразы (FAQ, меню, цены)
- Интеграция с базой данных или Google-таблицами
- Настоящий интеллект: нейросети, генерация текста, голосовые функции
Как и где разместить бота

Сейчас ваш бот работает только пока открыт файл bot.py. Но как быть, если вы хотите, чтобы он отвечал 24/7, даже когда компьютер выключен? Для этого бота нужно разместить в облаке.
Тестовый запуск на локальной машине
Если вы пока просто экспериментируете, можно запускать бота локально, со своего компьютера:
- Активируйте виртуальное окружение (если вы его используете).
- Откройте терминал и запустите файл: python bot.py
- Бот начнет работать — пока терминал открыт, он будет отвечать в Telegram.
Минус: как только вы закроете ноутбук или терминал — бот перестанет работать.
*Это вариант подходит только для тестов.
Облачный хостинг: Railway и Heroku
Чтобы бот работал постоянно и без вашего участия, его нужно разместить на сервере. Проще всего использовать облачные платформы. Ниже два варианта, которые подходят даже тем, кто не сталкивался с хостингом раньше.
Railway — простой и быстрый способ
- Удобный интерфейс, регистрация через GitHub
- Поддерживает Python-проекты “из коробки”
- Есть бесплатный тариф (500 часов в месяц)
- Позволяет быстро загрузить код с GitHub и запустить
Railway отлично подходит для размещения Telegram-бота, вы просто заливаете код и запускаете.
Heroku — классика, но с нюансами
- До 2022 года был главным бесплатным хостингом
- Сейчас требует карту и платный план, но недорогой
- Отлично документирован, много уроков
- Подходит для продвинутых пользователей
Что потребуется для запуска в облаке
На любой платформе вам нужно:
- Создать файл requirements.txt с зависимостями
- Указать токен как переменную среды
- По желанию — создать Procfile (для Heroku)
- Загрузить проект на GitHub или напрямую
Куда двигаться дальше
Поздравляем — вы сделали базового Telegram-бота. Но это только начало. Теперь можно постепенно добавлять функциональность и строить настоящую систему.
Добавление логики
Вы можете научить бота:
- реагировать на конкретные фразы (“цены”, “адрес”, “заказ”);
- запускать разные сценарии в зависимости от текста;
- анализировать сообщения и давать “умные” ответы.
Всё это делается через обычные if и elif — без сложного кода.
Интеграция с внешними API
Бот может получать данные из других сервисов и отвечать на их основе.
Примеры:
- API погоды: “Какая погода в Москве?”
- Курсы валют: “Курс доллара сегодня?”
- Расписание или остатки товаров
Реализуется через библиотеку requests и несколько строк кода.
Подключение базы данных
Если вы хотите, чтобы бот “запоминал” пользователей, заявки или анкеты, то нужна база данных.
Варианты:
- SQLite — встроенная и простая, подходит для начала
- PostgreSQL или MongoDB — для более серьёзных проектов
Вы сможете хранить имена, предпочтения, статистику и восстанавливать их при следующем визите пользователя.
Машина состояний (FSM)
FSM — это “машина состояний”, которая помогает строить диалог по шагам. Например:
- Сначала бот спрашивает имя
- Потом — номер телефона
- Потом — адрес
Это нужно, если вы делаете:
- Анкеты
- Формы заказов
- Сценарии с ветвлениями
Для этого подойдут: ConversationHandler в python-telegram-bot или FSM в aiogram.
Заключение: вы уже умеете больше, чем кажется
Если вы дошли до этого момента — поздравляем. Вы уже:
- Установили Python и библиотеку
- Получили токен и подключили бота
- Реализовали команды, реакции на сообщения и кнопки
- Запустили код и поняли, как он работает
- Разобрались, куда двигаться дальше
Это очень сильная база. Даже если вы не считаете себя программистом — вы уже создали работающий продукт, который можно показать, использовать, развивать. А если вы понимаете, что хотите запустить более серьёзное решение: с логикой, интеграциями, базой данных или связкой с CRM, и не хотите тратить время на техническую сторону, всегда можно доверить разработку профессионалам. В ChatLabs мы создаём ботов под конкретные задачи: от простых консультационных сценариев до полноценных цифровых ассистентов. Без шаблонов, с учетом реальных целей.