Телеграмм бот позволяет найти выгодное предложение на платформе Hotels.com.
Пользователь с помощью специальных команд бота может выполнить следующие действия (получить следующую информацию):
- Узнать топ самых дешёвых отелей в городе (команда /low).
- Узнать топ самых дорогих отелей в городе (команда /high).
- Узнать топ отелей, наиболее подходящих по цене и расположению от центра (самые дешёвые и находятся ближе всего к центру) (команда /best_deal).
- Узнать историю поиска отелей (команда /history)
Для разработки и функционирования проекта используется открытый API Hotels, который расположен на сайте rapidapi.com.
Эти инструкции помогут вам развернуть проект на локальном компьютере для разработки и тестирования
Перед тем, как начать:
- Если вы не пользуетесь
Python 3
, вам нужно установить инструментvirtualenv
при помощиpip install virtualenv
. Если вы используетеPython 3
, у вас уже установлен модуль venv в стандартной библиотеке.
- Создайте на своем компьютере папку проекта
- Склонируйте репозиторий в папку проекта
https://gitlab.skillbox.ru/nikita_shubniakov/python_basic_diploma
- Создайте файл
.env
и добавьте в него переменные окружения, следующего вида:
BOT_TOKEN= "ваш бот токен"
RAPID_API_KEY= "ваш rapid_api key"
- Активируйте виртуальное окружение - Установите все зависимости - Запустите бота командой `python main.py` из терминала из папки с проектом.
После ввода команды:
- Выводится приветствие пользователю.
После ввода команды:
- Выводится список всех команд, с кратким описанием, что делает каждая команда.
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий (не больше заранее определённого максимума)
- Выводится календарь с возможностью выбора даты заезда или выезда.
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате (не больше заранее определённого максимума)
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий
- Выводится календарь с возможностью выбора даты заезда или выезда.
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате (не больше заранее определённого максимума)
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий (не больше заранее определённого максимума)
- Выводится календарь с возможностью выбора даты заезда или выезда.
- Диапазон расстояния, на котором находится отель от центра
После ввода команды пользователю выводится история поиска отелей:
- Выдает список выполненных пользователем запросом, но не более 5
- Дату и время ввода команды
- То слово (город), по которому пользователь искал отели
- Если пользователю фотографии были не нужны, то они выведены не будут
Окно Telegram-бота при запущенном Python-скрипте воспринимает следующие команды:
- /start - запуск бота
- /help — помощь по командам бота
- /low — вывод самых дешёвых отелей в городе
- /high — вывод самых дорогих отелей в городе
- /best_deal — вывод отелей, наиболее подходящих по цене и расположению от центра
- /history — вывод истории поиска отелей
Для команд low, high и best_deal сообщение с результатом содержит краткую информацию по каждому отелю. В эту информацию входит:
- Название отеля
- Адрес
- Цена за ночь (в долларах США)
- Как далеко отель расположен от центра
- N фотографий отеля (если пользователь счёл необходимым их вывод)