Telegram-бот для анализа сайта Hotels.com и поиска подходящих пользователю отелей. Работает с API от Hotels.com
- Language (язык): Russian
- Author (Автор): Андрей Плеханов
Демонстрация работы программы: смотреть видео >>
- Python 3
- AIOgram (асинхронный)
- PostgreSQL (пользователи и история запросов сохраняются в БД)
- ORM SQLAlchemy
- Docker / Docker-compose
- Клонировать репозиторий
- Создать telegram-бота у BotFather и получить токен
- Получить ключ от rapidapi:
- Зарегистрироваться на сайте rapidapi.com
- Перейти в API Marketplace → категория Travel → Hotels (либо просто перейти по прямой ссылке на документацию Hotels API Documentation)
- Нажать кнопку Subscribe to Test
- Выбрать пакет (есть бесплатный вариант)
- Забрать KEY
- Файл .env.dist переименовать в .env и прописать там BOT_TOKEN и RAPID_API_KEY
- Запустить бота в Docker-контейнере:
docker-compose up —-build
(первый запуск может занять продолжительное время) - Остановить бота командой:
Crtl+C
Бот реагирует на команды:
- /start — Запустить бота
- /help — Вывести справку
- /lowprice — Вывести Топ самых дешёвых отелей в городе
- /highprice — Вывести Топ самых дорогих отелей в городе
- /bestdeal — Настраиваемый поиск отелей
- /history — История поиска
После ввода команд /lowprice и /highprice бот проводит опрос пользователя:
- город для поездки
- дата заселения в отель
- количество ночей проживания в отеле
- количество отелей для вывода результата (максимум 10)
При вводе команды /bestdeal дополнительно запрашивается:
- диапазон цен в $ за 1 ночь
- максимальная удаленность от центра города
- количество взрослых гостей, заселяющихся в 1 номер отеля
После опроса Бот делает запрос к API и выводит результат. При просмотре результата пользователь может загрузить фото к конкретному отелю (10 фотографий).
При удачных запросах ведется история поиска. Все запросы и их результат сохраняется в базе данных.
При вводе команды /history пользователю предлагается уточнить действие:
- Показать историю поиска — будет показана вся история поисковых запросов пользователя. При нажатии на конкретный запрос выводится результат того поиска.
- Очистить историю — вся история поиска будет удалена из базы данных.