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
Настройка окружения производится автоматически, для работы с ботом достаточно загрузить файлы на сервер и запустить скрипт.
:::