Чат-боты давно перестали быть игрушкой энтузиастов. Сегодня они принимают заказы, отвечают на вопросы клиентов, напоминают о встречах и собирают статистику. И самое приятное: чтобы создать собственного бота, не нужны годы опыта — достаточно Python, свободного вечера и этого руководства.
Полный цикл разработки Telegram-бота на Python: выбор библиотеки, написание кода, добавление кнопок и публикация бота на сервере — с примерами, которые работают.
Почему для ботов выбирают Python
Python занимает первые места в рейтингах популярности языков программирования, и для разработки ботов у него есть три весомых преимущества: простой синтаксис, богатая экосистема библиотек и огромное сообщество. Даже человек, впервые открывший редактор кода, способен за один вечер написать бота, который отвечает на сообщения.
Шаг 1. Регистрация бота в BotFather
Любой Telegram-бот начинается с официального бота-конструктора @BotFather. Процедура занимает не больше двух минут:
- Откройте Telegram и найдите @BotFather (у него синяя галочка верификации).
- Отправьте команду
/newbot. - Придумайте имя бота — оно будет отображаться в чатах.
- Придумайте юзернейм — он обязательно должен заканчиваться на
bot. - Скопируйте токен — длинную строку вида
123456:ABC-DEF.... Это ключ доступа к вашему боту.
/revoke у BotFather.
Шаг 2. Выбор библиотеки
Для Telegram Bot API существует несколько Python-библиотек. Две самые популярные сравним в таблице:
| Критерий | Aiogram 3.x | python-telegram-bot |
|---|---|---|
| Порог входа | Низкий, понятная документация на русском | Средний, больше формальностей |
| Асинхронность | Полная поддержка asyncio «из коробки» | Поддерживается с версии 20.x |
| Машина состояний (FSM) | Встроенная, удобная | Через ConversationHandler |
| Для кого подходит | Новички и быстрые проекты | Корпоративные решения, сложная логика |
В этом руководстве используется Aiogram 3 — самый популярный выбор среди русскоязычных разработчиков.
Шаг 3. Установка окружения
Перед написанием кода нужно подготовить рабочее окружение. Откройте терминал и выполните команды по очереди:
# Создаём папку проекта mkdir my_bot && cd my_bot # Создаём виртуальное окружение python -m venv venv # Активируем его venv\Scripts\activate # Windows source venv/bin/activate # macOS / Linux # Устанавливаем aiogram pip install aiogram
Шаг 4. Первый работающий бот
Создайте файл bot.py и вставьте в него следующий код. Это классический «эхо-бот»: он отвечает на команду /start и повторяет любое присланное сообщение.
import asyncio
from aiogram import Bot, Dispatcher
from aiogram.filters import CommandStart
from aiogram.types import Message
BOT_TOKEN = "ВАШ_ТОКЕН_ОТ_BOTFATHER"
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()
@dp.message(CommandStart())
async def cmd_start(message: Message):
await message.answer(
"Привет! Я ваш первый бот на Python 🤖"
)
@dp.message()
async def echo(message: Message):
await message.answer(f"Вы написали: {message.text}")
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Замените строку ВАШ_ТОКЕН_ОТ_BOTFATHER на реальный токен и запустите бота командой:
python bot.py
Шаг 5. Добавляем кнопки
Текстовые ответы — это только начало. Реальные боты общаются с пользователем через клавиатуры. Вот как добавить встроенные (inline) кнопки:
from aiogram.types import (
InlineKeyboardMarkup,
InlineKeyboardButton,
CallbackQuery
)
from aiogram import F
keyboard = InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="📋 Каталог", callback_data="catalog")],
[InlineKeyboardButton(text="ℹ️ О нас", callback_data="about")]
])
@dp.message(CommandStart())
async def cmd_start(message: Message):
await message.answer("Выберите раздел:", reply_markup=keyboard)
@dp.callback_query(F.data == "catalog")
async def show_catalog(callback: CallbackQuery):
await callback.message.answer("Здесь будет каталог товаров")
await callback.answer()
Шаг 6. Публикация на сервере
Бот, запущенный на домашнем компьютере, работает только пока открыт терминал. Для круглосуточной работы его нужно разместить на сервере. Существует два подхода:
Для первого бота достаточно недорогого VPS (виртуального сервера). Алгоритм деплоя выглядит так:
- Арендуйте VPS с Ubuntu и подключитесь по SSH.
- Установите Python 3.10+ и скопируйте файлы проекта (например, через
git). - Создайте виртуальное окружение и установите зависимости.
- Настройте автозапуск через systemd, чтобы бот перезапускался после сбоев.
Типичные ошибки новичков
.env, добавленном в .gitignore.Куда двигаться дальше
Базовый бот готов, но это только фундамент. Следующие шаги в развитии проекта:
Разработка бота на Python — навык, который осваивается практикой. Напишите простого эхо-бота сегодня, добавьте кнопки завтра — и через неделю у вас будет полноценный помощник, которым пользуются реальные люди.