Назад в блог
Боты

Создание Telegram бота на Python: полное руководство

Пошаговое руководство по разработке Telegram бота на Python с использованием Aiogram 3.x

Автор
Liske Development

Создание Telegram бота на Python

Telegram боты — мощный инструмент для автоматизации бизнеса, рассылок и поддержки клиентов. В этом руководстве мы создадим бота с нуля.

Преимущества Telegram ботов

Бесплатные API, высокая скорость работы, поддержка платежей,_inline-режим и множество других функций делают Telegram идеальной платформой для автоматизации.

Что нам понадобится

  • Python 3.11+
  • Редактор кода (VS Code, PyCharm)
  • Telegram аккаунт
  • Базовые знания Python

Шаг 1: Создание бота в Telegram

  1. Откройте Telegram и найдите @BotFather
  2. Отправьте команду /newbot
  3. Следуйте инструкциям:
    Вы можете выбрать имя для вашего бота, например: Tetris Bot или TetrisBot.
    Хорошее имя для вашего бота: MyAwesomeShopBot
  4. Получите токен бота (сохраните его в секрете!)

Шаг 2: Настройка проекта

# Создаём директорию проекта
mkdir telegram_bot
cd telegram_bot

# Создаём виртуальное окружение
python -m venv venv
source venv/bin/activate  # Linux/Mac
# или
venv\Scripts\activate  # Windows

# Устанавливаем зависимости
pip install aiogram python-dotenv

Шаг 3: Базовая структура

Внимание

Никогда не коммитьте BOT_TOKEN в репозиторий! Используйте файл .env и добавьте его в .gitignore.

Создайте файл .env:

BOT_TOKEN=your_token_here

Создайте файл main.py:

import os
from dotenv import load_dotenv
from aiogram import Bot, Dispatcher
from aiogram.filters import Command
from aiogram.types import Message

load_dotenv()

bot = Bot(token=os.getenv('BOT_TOKEN'))
dp = Dispatcher()

@dp.message(Command('start'))
async def cmd_start(message: Message):
    await message.answer(
        'Привет! Я бот для автоматизации вашего бизнеса. '
        'Выберите команду из меню.'
    )

if __name__ == '__main__':
    dp.run_polling(bot)

Шаг 4: Добавляем команды

@dp.message(Command('help'))
async def cmd_help(message: Message):
    help_text = '''
    📋 Доступные команды:
    /start - Начать работу
    /help - Справка
    /catalog - Каталог товаров
    /contacts - Контакты
    '''
    await message.answer(help_text)

@dp.message(Command('catalog'))
async def cmd_catalog(message: Message):
    # Здесь будет логика каталога
    await message.answer('📦 Каталог товаров в разработке...')

Шаг 5: Работа с кнопками

from aiogram.utils.keyboard import ReplyKeyboardBuilder, KeyboardButton

@dp.message(Command('menu'))
async def cmd_menu(message: Message):
    builder = ReplyKeyboardBuilder()
    builder.add(KeyboardButton(text='📦 Каталог'))
    builder.add(KeyboardButton(text='🛒 Корзина'))
    builder.add(KeyboardButton(text='❓ Помощь'))
    
    await message.answer(
        'Главное меню:',
        reply_markup=builder.as_markup(resize_keyboard=True)
    )

Шаг 6: Инлайн кнопки

from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram.types import InlineKeyboardMarkup

def create_product_keyboard(product_id: int):
    builder = InlineKeyboardBuilder()
    builder.button(text='Добавить в корзину', callback_data=f'add_{product_id}')
    builder.button(text='Подробнее', callback_data=f'info_{product_id}')
    return builder.as_markup()

@dp.message(Command('products'))
async def cmd_products(message: Message):
    # Пример товара
    await message.answer(
        'Товар: iPhone 15 Pro\nЦена: 99,990 ₽',
        reply_markup=create_product_keyboard(1)
    )

Шаг 7: Обработка callback

from aiogram import F

@dp.callback_query(F.data.startswith('add_'))
async def cb_add_to_cart(callback: any):
    product_id = callback.data.split('_')[1]
    await callback.answer(f'Товар {product_id} добавлен в корзину')
    await callback.message.edit_text('✅ Товар добавлен!')

Шаг 8: Работа с БД

Используем SQLAlchemy:

pip install sqlalchemy asyncpg
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker

engine = create_async_engine('postgresql+asyncpg://user:password@localhost/db')
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

Шаг 9: Деплой

Используем Docker:

FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "main.py"]

Лучшие практики

Информация

Эти практики помогут создать надёжного бота, который будет стабильно работать даже при больших нагрузках.

  1. Логирование: Используйте встроенный logger
  2. Обработка ошибок: Try-except для критических операций
  3. Rate limiting: Не спамьте сообщения
  4. Безопасность: Храните секреты в .env
  5. Тестирование: Пишите тесты для критических функций

Заключение

Это базовый шаблон для создания Telegram бота. Для production-версии добавьте:

  • ✅ Файловое хранилище
  • ✅ Платёжную систему
  • ✅ Админ-панель
  • ✅ Аналитику
  • ✅ Мультиязычность

Нужна помощь с разработкой бота? Свяжитесь с нами!

Поделиться статьей

Возможности Telegram бота

📋

Каталог товаров

Просмотр и поиск товаров с фото и описанием

🛒

Корзина и оформление

Управление заказами прямо в боте

💳

Прием платежей

Интеграция с платежными системами

📊

Аналитика

Статистика продаж и активности пользователей

🔔

Уведомления

Автоматические уведомления о статусе заказа

🌐

Мультиязычность

Поддержка нескольких языков интерфейса

Этапы разработки Telegram бота

1

Создание бота

Регистрация через @BotFather и получение токена

2

Настройка проекта

Установка Aiogram и настройка .env

3

Базовые команды

Реализация /start, /help, /menu

4

Кнопки

Reply и Inline кнопки для навигации

5

Callback обработка

Обработка нажатий на кнопки

6

База данных

SQLAlchemy для PostgreSQL

7

Деплой

Docker контейнеризация и запуск

Нужен Telegram бот?

Разработаем ботов для бизнеса: от простых до E-commerce