Onlyphones === #### `Документ, описывающий нюансы разработки бота` :::success Важный момент данной реализации Telegram бота - нет необходимости в инфраструктуре для обслуживания бота. Бот работает "из коробки", причем при оформлении заказа, заказ представляет из себя обычный заказ на сайте (т.е. заказчик сможет обрабатывать заказы как и раньше). Все изменения товаров на сайте автоматически появляются и в боте (например, при добавлении нового телефона на сайте, он автоматически появится и в боте). ::: ## Оъём работы ### Web-составляющая :::info 1) Изучение работы сайта onlyphones.ru, выделение методов для работы с каталогом, корзиной и оформлением заказа 2) Формирование однородных данных, работа с разными форматы запросов к сайту (сайт использует cookie, нужно правильно с ними обращаться при составлении запросов к сайту) 3) Разработка парсера, работающего при отсутствии единой структуры данных на сайте (3 страницы: каталог, корзина, оформление заказа) 4) Написание собственных методов API для работы с каталогом, корзиной и оформлением заказа (3-5 разных методов, каждый имеет разные структуры) 5) Разработка и настройка динамического формирования каталога и корзины (при добавлении, изменении или удалении продуктов на сайте, изменения автоматически будут добавлены и в бота) ::: ### Telegram-составляющая :::info 1) Реализация отображения каталога выбора товаров в боте: - Отображение **фотографии, цены, цвета и объема памяти** выбранного товара - Динамическое изменение вышеперечисленных характеристик товара при нажатии на кнопки inline-клавиатуры 2) Реализация отображения корзины пользователя в боте: - Отображение **фотографии, цены, цвета, объема памяти, количества и стоимости** каждого товара в корзине - Удаление товара из корзины при нажатии на соответствующие клавиши inline-клавиатуры - Отображение **полной стоимоти корзины** с последующим переходом к оформлению заказа при нажатии на соответствующие клавиши inline-клавиатуры 3) Реализация оформления заказа внутри бота 4) Поиск оптимального UI бота, при котором все действия пользователя остаются интуитивно-понятными 5) Ускорение работы бота путём сокращения числа запросов к сайту (всвязи с их долгой обработкой на сайте): - Поиск компромисного решения, между сокращением числа запросов и актуальностью интерфейса бота - Кэширование каталога в базе данных бота (в разы уменьшает количество запросов, что в свою очередь ведёт к быстродействию бота) - Регулярное обновление закэшированного каталога в базе данных бота, что делает интерфейс актуальным при добавлении на сайт нового товара ::: ### Разворачивание бота :::success Настройка окружения производится автоматически, для работы с ботом достаточно загрузить файлы на сервер и запустить скрипт. :::