Telegram бот по расчету стоимости растаможки
Бот для расчета стоимости растаможки автомобиля, зарегистрированного в Армении и ввозимого на территорию России. Получает данные в реальном времени из гугл-таблиц, что гарантирует соответствие расчета фактической стоимости на таможенном пункте. Удобное многоуровневое меню обеспечивает интуитивно понятный выбор параметров автомобиля. Кроме того, имеется бонусная система для клиентов и возможность просмотра истории растаможенных автомобилей.
Бот получает актуальные данные о доступных автомобилях и ценах за растаможку из Google-таблицы, которая обновляется при изменениях в базе таможенных пунктов. Полученные данные бот обрабатывает и отображает в удобном меню, где можно выбрать все необходимые параметры автомобиля и получить актуальную стоимость растаможки. Для управления этим и другими меню используется машина состояний (FSMContext), что позволяет организовать пошаговое взаимодействие, упрощая ввод данных, обеспечивая простое переключение между страницами клавиатуры.
После выборе всех обязательных параметров автомобиля в меню, бот выполняет все нужные вычисления и показывает пользователю в удобном виде следующие данные: цену автомобиля в Армении, цену, которая будет указана в инвойсе, стоимость растаможки и стоимость услуг компании.
С помощью соответствующей кнопки пользователь может посмотреть историю растаможенных автомобилей. Там же показывается краткая информация об автомобиле и количество полученных бонусов за данную сделку. Для примера я добавил себе несколько автомобилей и поставил максимальное количество элементов на одной странице равное двум, чтобы показать как листаются страницы в случае, когда не хватает место для всех сделок пользователя.
В боте также присуствует небольшая админ-панель для случаев, когда администратор хочет вручную добавить / удалить транзакцию или посмотреть список пользователей, имеющих историю. В меню также используется машина состояния, что позволяет администратору указывать все нужные данные поэтапно и листать страницы клавиатуры тогда, когда количество подсказок превышает допустимое число кнопок, помещающих в интерфейсе клавиатуры.
Данные, указанные пользователем, проходят тщательную валидацию перед подтверждением. Это значит, что пользователь не может указать название несуществующего автомобиля, модели, комплектации или объема двигателя. Также валидацию проходят вручную добавленные администратором сделки. Например, если в истории какого-то пользователя уже есть автомобиль с таким VIN, то администратору не удастся его добавить этому же пользователю или кому-то еще.
В боте также реализована небольшая система очистки лишних данных. В случае, когда пользователь не завершил заполнение формы и долгое время бездействует или, например, пользователь блокирует бота после выбора некоторых параметров формы, данные его сессии о пройденных этапах формы очищаются. Если при этом у бота есть возможность отправить сообщение пользователю, он уведомляет пользователя об этом и предлагает попробовать снова.