Задача: самостоятельный инструмент рядом с сайтом
У заказчика уже был сайт. Он обратился за отдельным инструментом в Telegram — дополнительной точкой входа для клиентов. Задача заключалась не в переносе сайта в мессенджер и не в обмене данными между ними: интеграции и синхронизации с сайтом у бота нет.
Историческая предметная область проекта — алкогольная розница. Здесь речь о выполненной разработке: каталоге, пользовательском интерфейсе и средствах управления содержимым.
Для такого инструмента важны обе стороны. Пользователю нужен понятный путь от категории к выбранным позициям. Администратору — способ вести данные, на основе которых бот показывает каталог. Поэтому решение включает не только Telegram-интерфейс, но и панель в браузере. Она относится к самому боту, а не к прежнему сайту заказчика.
Как устроена работа с каталогом
Администратор ведёт категории и товары в веб-панели: меняет названия, описания, цены и изображения. Отдельные записи можно редактировать через формы, а набор товарных данных — загружать из Excel. В этой же панели доступны предусмотренные тексты сообщений, меню и свойства кнопок.
Это работа с содержимым по мере необходимости, а не обязательная подготовка перед каждым просмотром. Пользовательский сценарий начинается в Telegram: человек просматривает категории, переходит к товарам и выбирает позиции и количество для своей корзины. Бот показывает её состав и рассчитывает общую сумму по текущим ценам товаров. Для пустой корзины предусмотрено отдельное отображение.
Так у двух участников разные задачи внутри одного инструмента. Администратор отвечает за содержимое, пользователь — за собственный выбор, а программа формирует представление каталога, сохраняет состав корзины и выполняет расчёт.
Схема действий
Администратор · Веб-панель
- Ведёт товары и категории
- Правит предусмотренные тексты, меню и кнопки
- Загружает набор товарных данных из Excel
Ведение содержимого — по мере необходимости
Пользователь · Telegram
Просматривает категории и товары
Пользователь · Корзина
Выбирает позиции и количество
Бот
Показывает состав корзины и сумму по текущим ценам
Что я разработал и сделал управляемым
Бота я полностью разработал самостоятельно. В решении объединил каталог, пользовательскую корзину, веб-панель, загрузку из Excel и редактируемые элементы интерфейса. Содержательная часть работы — не только показать данные в Telegram, но и дать средства для их ведения.
Каталог и корзина опираются на связанные данные
Категории и товары хранятся как записи каталога. На их основе бот строит список и карточку, а не использует отдельное вручную написанное сообщение для каждой позиции. Это разделяет сведения о товаре и способ их представления в мессенджере.
Корзина связывает пользователя с выбранными товарами и количеством. Для расчёта используется текущая цена товара из каталога, а не копия цены на момент добавления. Поэтому корзина здесь — способ собрать выбор и увидеть сумму, не механизм фиксации цены, учёта остатков или резервирования.
Ручная правка и Excel решают разные задачи
Веб-панель даёт возможность работать с отдельной записью: добавить товар, изменить его данные или удалить. Загрузка из Excel предназначена для переноса набора товарных данных в каталог бота. Импорт добавляет новые записи либо обновляет поля найденных.
Существенное правило этой версии — сопоставление товара по названию, а не по артикулу. Категории, указанные в таблице, должны уже существовать в каталоге. Это определённый способ загрузки подготовленных данных, а не обработка любой таблицы без дополнительных условий.
Форма редактирования и импорт дополняют друг друга: для одной правки не обязательно загружать файл, а для набора данных предусмотрен табличный путь. Оба способа относятся к каталогу самого бота.
Содержимое интерфейса отделено от нового поведения
Через панель можно редактировать предусмотренные тексты сообщений, раскладку связанных меню и свойства хранимых кнопок. При формировании соответствующего экрана бот использует сохранённый шаблон текста и меню.
Это позволяет менять предусмотренное содержимое без правки кода для каждой формулировки. Но панель не заменяет разработку новых функций: новое поведение и новые сценарии по-прежнему требуют программирования. Настройка шаблонов относится к формированию экранов, а не к массовому обновлению всей истории переписки.
Результат разработки
Я создал самостоятельный инструмент с каталогом и корзиной в Telegram и веб-панелью для ведения его содержимого. В нём связаны пользовательские действия и средства управления: от загрузки товарных данных до настройки предусмотренных сообщений и меню.
Главное в этой работе — две стороны одного решения. Пользователь взаимодействует с каталогом, администратор ведёт данные и доступные настройки интерфейса, а бот строит представление и рассчитывает корзину. Это и есть функциональный результат разработки.
Технологии: Python, Telegram Bot API / python-telegram-bot, Flask / Flask-Admin, SQLAlchemy, pandas для работы с Excel.