Телеграмм бот позволяет найти выгодное предложение на платформе Hotels.com.
Пользователь с помощью специальных команд бота может выполнить следующие действия (получить следующую информацию):
- Узнать топ самых дешёвых отелей в городе (команда /lowprice).
- Узнать топ самых дорогих отелей в городе (команда /highprice).
- Узнать топ отелей, наиболее подходящих по цене и расположению от центра (самые дешёвые и находятся ближе всего к центру) (команда /bestdeal).
- Узнать историю поиска отелей (команда /history)
Для разработки и функционирования проекта используется открытый API Hotels, который расположен на сайте rapidapi.com.
Эти инструкции помогут вам развернуть проект на локальном компьютере для разработки и тестирования
Перед тем, как начать:
- Если вы не пользуетесь
Python 3
, вам нужно установить инструментvirtualenv
при помощиpip install virtualenv
. Если вы используетеPython 3
, у вас уже установлен модуль venv в стандартной библиотеке.
-
Клонировать проект командой: git clone
https://github.com/sejeenn/python_basic_diploma.git
-
создать файл
.env
вида:BOT_TOKEN= "ваш бот токен"
RAPID_API_KEY= "ваш rapid_api key"
DB_NAME= "database/db.sqlite3"
- Установить виртуальное окружение командой: python -m venv venv
- Активировать виртуальное окружение командой: source venv/bin/activate
- установить необходимые зависимости командой: pip install -r requirements.txt
- Запустите бота командой: python main.py
- Создайте на своем компютере папку проекта
- Склонируйте этот репозиторий в папку проекта
https://github.com/sejeenn/python_basic_diploma.git
- Создайте файл
.env
и добавьте в него переменные окружения, следующего вида:
BOT_TOKEN= "ваш бот токен"
RAPID_API_KEY= "ваш rapid_api key"
- Активируйте виртуальное окружение `pipenv shell` - Установите все зависимости `pipenv install --ignore-Pipfile` - Запустите бота командой `pipenv run main.py` из Терминала из папки с проектом
После ввода команды:
- Выводится приветствие пользователю
После ввода команды:
- Выводится список всех команд, кратким описанием что делает каждая команда
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате (не больше заранее определённого максимума)
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий (не больше заранее определённого максимума)
- Выводится календарь с возможностью выбора даты заезда или выезда.
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате (не больше заранее определённого максимума)
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий (не больше заранее определённого максимума)
- Выводится календарь с возможностью выбора даты заезда или выезда.
После ввода команды у пользователя запрашивается:
- Город, где будет проводиться поиск
- Выдается список возможных вариантов городов в виде inline-клавиатуры, пользователь выбирает нужный
- Количество отелей, которые необходимо вывести в результате (не больше заранее определённого максимума)
- Запрашиваются минимальная и максимальная стоимость отеля в долларах США
- Необходимость загрузки и вывода фотографий для каждого отеля (“Да/Нет”). При положительном ответе пользователь также вводит количество необходимых фотографий (не больше заранее определённого максимума)
- Выводится календарь с возможностью выбора даты заезда или выезда.
- Диапазон расстояния, на котором находится отель от центра
После ввода команды пользователю выводится история поиска отелей:
- Выдает список выполненных пользователем запросом, но не более 5
- Дату и время ввода команды
- То слово (город), по которому пользователь искал отели
- Если пользователю фотографии были не нужны, то они выведены не будут
Окно Telegram-бота при запущенном Python-скрипте воспринимает следующие команды:
- /start - запуск бота
- /help — помощь по командам бота
- /lowprice — вывод самых дешёвых отелей в городе
- /highprice — вывод самых дорогих отелей в городе
- /bestdeal — вывод отелей, наиболее подходящих по цене и расположению от центра
- /history — вывод истории поиска отелей
Для команд lowprice, highprice и bestdeal сообщение с результатом содержит краткую информацию по каждому отелю. В эту информацию входит:
- Название отеля
- Адрес
- Цена за ночь (в долларах США)
- Как далеко отель расположен от центра
- N фотографий отеля (если пользователь счёл необходимым их вывод)
pyTelegramBotAPI==4.4.0
python-dotenv==0.19.2
pip~=21.1.2
wheel~=0.36.2
certifi~=2022.6.15
requests~=2.28.1
idna~=3.3
urllib3~=1.26.11
setuptools~=57.0.0
loguru~=0.6.0