Telegram-магазины — это удобный способ продавать товары и услуги прямо через мессенджер. Благодаря боту можно автоматизировать процесс продаж, принимать заказы и даже обрабатывать платежи без необходимости создания веб-сайта.
В этой серии статей мы разберем, как создать Telegram-магазин с использованием aiogram, одного из самых популярных асинхронных фреймворков для разработки ботов на Python.
Почему Telegram-магазин?
Создание магазина в Telegram имеет множество преимуществ:
- 📈 Большая аудитория — Telegram насчитывает сотни миллионов пользователей по всему миру.
- ⚡ Быстродействие — Бот обрабатывает заказы мгновенно, без задержек.
- 🛒 Интерактивность — Поддержка кнопок, форм заказов и даже встроенных платежей.
- 💰 Низкие затраты — Не требуется хостинг сайта или мобильное приложение.
- 🔐 Безопасность — Telegram предоставляет защиту данных на высоком уровне.
Почему именно aiogram?
aiogram — это асинхронный фреймворк для создания Telegram-ботов, который имеет ряд преимуществ перед другими библиотеками:
✅ Высокая производительность — работает на основе asyncio, что позволяет обрабатывать тысячи запросов одновременно.
✅ Гибкость — поддерживает сложные сценарии, например, работу с состояниями.
✅ Простота в использовании — удобный и понятный синтаксис.
✅ Официальная поддержка — активно обновляется и поддерживается сообществом.
Установка и настройка окружения
Перед тем как приступить к написанию кода, необходимо установить все зависимости и настроить окружение. Я буду использовать программу PyCharm. В ней при создании проекта окружение создается автоматически. Но если вы используете другие способы, то нужно установить виртуальное окружение.
Установка Python и виртуального окружения
- Убедитесь, что у вас установлен Python 3.8+.
python --versionЕсли Python не установлен, скачайте его с официального сайта.
- Создайте виртуальное окружение для проекта:
python -m venv venvАктивируйте окружение:
- Windows:
venv\Scripts\activate - Mac/Linux:
source venv/bin/activate
- Windows:
Установка aiogram
Установите aiogram и библиотеку python-dotenv для работы с переменными окружения:
pip install aiogram python-dotenv
Регистрация бота в Telegram (BotFather)
Теперь нужно создать бота. В поиске приложения телеграм введите BotFather. Проверьте чтобы это был официальный бот @BotFather.

Откройте BotFather в Telegram и отправьте команду:
/newbot
Укажите имя, например: test_itsferapro_shop
Укажите username бота (username должен заканчиваться наbot). Например: test_itsferapro_shop_bot
Скопируйте API-токен, который вам выдаст BotFather.
Создайте файл с расширением .env и сохраните токен:
BOT_TOKEN=ВАШ_ТОКЕН_ОТ_BOTFATHER

Написание первого кода бота
Чтобы сделать код понятным и расширяемым, мы разделим его на несколько файлов:

Краткое описание файлов:
bot.py– запускает бота и подключает обработчики.config.py– загружает настройки, включая API-токен.keyboards.py– содержит код для создания кнопок.handlers.py– содержит обработчики команд, сообщений и callback-кнопок..env– хранит API-токен бота, чтобы не раскрывать его в коде.
В файл config.py передадим наш токен:
import os
from dotenv import load_dotenv
# Загружаем переменные окружения из .env
load_dotenv()
# Читаем токен из окружения
BOT_TOKEN = os.getenv("BOT_TOKEN")
# Проверяем, загружен ли токен
if not BOT_TOKEN:
raise ValueError("BOT_TOKEN не найден! Проверьте файл .env")
Создадим файл bot.py и запишем туда код:
import asyncio
import os
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message
from dotenv import load_dotenv
# Загружаем переменные окружения
load_dotenv()
# Получаем токен
BOT_TOKEN = os.getenv("BOT_TOKEN")
# Проверяем, есть ли токен
if not BOT_TOKEN:
raise ValueError("Ошибка: BOT_TOKEN не найден. Проверьте файл .env!")
# Создаем объекты бота и диспетчера
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher()
# Обработчик команды /start
@dp.message()
async def start_command(message: Message):
if message.text == "/start":
await message.answer("Привет! Это тестовый Telegram-магазин.")
# Функция запуска бота
async def main():
print("Бот запущен...")
await bot.delete_webhook(drop_pending_updates=True) # Удаляем старые апдейты
await dp.start_polling(bot) # Запускаем бота
# Запуск асинхронного цикла
if __name__ == "__main__":
asyncio.run(main())
Разбор кода bot.py
После установки aiogram и создания бота в BotFather, мы написали код bot.py, который отвечает за запуск Telegram-бота и обработку команд. Давайте разберем его по частям.
1. Импорт необходимых библиотек
Здесь мы:
- Импортируем asyncio — он нужен для асинхронной работы бота.
- Подключаем os для работы с переменными окружения.
- Импортируем классы из aiogram:
Bot,DispatcherиMessage. - Используем load_dotenv() для загрузки API-токена из файла
.env.
2. Загрузка API-токена
# Загружаем переменные окружения
load_dotenv()
# Получаем токен из файла .env
BOT_TOKEN = os.getenv("BOT_TOKEN")
# Проверяем, найден ли токен
if not BOT_TOKEN:
raise ValueError("Ошибка: BOT_TOKEN не найден. Проверьте файл .env!")
Что здесь происходит:
- Загружается файл .env, где хранится
BOT_TOKEN. - Переменная
BOT_TOKENполучает значение токена из окружения. - Если токен отсутствует, программа выбрасывает ошибку.
3. Создание бота и диспетчера
# Создаем объект бота
bot = Bot(token=BOT_TOKEN)
# Создаем диспетчер для обработки сообщений
dp = Dispatcher()
bot = Bot(token=BOT_TOKEN)— создаем объект бота и передаем ему API-токен.dp = Dispatcher()— диспетчер управляет обработкой сообщений.
В aiogram 3.x Dispatcher создается без аргументов (в отличие от aiogram 2.x, где bot передавался в Dispatcher(bot)).
4. Обработка команды /start
@dp.message()
async def start_command(message: Message):
if message.text == "/start":
await message.answer("Привет! Это тестовый Telegram-магазин.")
@dp.message()— декоратор, который ловит все текстовые сообщения от пользователей.message.text == "/start"— проверяем, что пользователь отправил/start.await message.answer("Привет! Это тестовый Telegram-магазин.")— бот отвечает пользователю.
5. Основная функция для запуска бота
async def main():
print("Бот запущен...")
await bot.delete_webhook(drop_pending_updates=True) # Удаляем старые апдейты
await dp.start_polling(bot) # Запускаем бота
print("Бот запущен...")— сообщение о запуске в консоли.await bot.delete_webhook(drop_pending_updates=True)— удаляет старые сообщения, чтобы бот не обрабатывал их после перезапуска.await dp.start_polling(bot)— запускает бесконечный цикл обработки входящих сообщений.
6. Запуск бота
if __name__ == "__main__":
asyncio.run(main())
- Проверяет, что файл запущен напрямую, а не импортирован в другой код.
asyncio.run(main())— запускаетmain()в асинхронном режиме.
Как запустить бота
Перед запуском убедитесь, что виртуальное окружение активировано:
venv\Scripts\activate # Windows
source venv/bin/activate # Mac/Linux
Запустите бота командой:
python bot.py
Этот бот обрабатывает команду /start и отвечает пользователю. Если вы все сделали правильно, то при вводе команды /start в телеграм боте получите сообщение «Привет! Это тестовый Telegram-магазин.«. В следующей статье мы разберем добавление кнопок, меню и обработку товаров для магазина. 🚀



Пока нет комментариев. Будьте первым!