- Описание
- Используемые API
- Структура проекта
- Запуск Docker-контейнера
- Описание команд для бота
- Примеры работы
Telegram-бот для отслеживания потребления воды и расхода и потребления калорий.
Ссылка в Telegram — @python_homework_2_bot.
Бот может довольно медленно отвечать на сообщения (или вообще не отвечать), потому что развёрнут на бесплатном хостинге.
В проекте используются следующие условно-бесплатные API:
- OpenWeatherMap Weather API - получение данных о погоде;
- CalorieNinjas Nutrition API - получение данных о калорийности пищи;
- API Ninjas Calories Burned API - получение данных об интенсивности тренировок.
src/- модуль с кодом Telegram-ботаbot.py- основной скрипт ботаprofile.py- скрипт с логикой настройки профиля пользователяdb.py- скрипт с логикой взаимодействия с БДutils.py- скрипт со вспомогательными функциямиconfig.py- скрипт с конфигурацией проекта
img/- папка с примерами работы ботаexample_*.jpg- скриншот переписки с ботом
task.ipynb- Jupyter-ноутбук с описанием заданияREADME.md- Markdown-файл с описанием проекта (данный файл)requirements.txt- файл с зависимостями проектаDockerfile- конфигурационный файл Docker.gitignore- файл с исключёнными из Git путями
Для сборки Docker-образа и запуска Docker-контейнера можно воспользоваться командами:
docker build -t health_bot .
docker run health_botНачало работы с ботом.
Получение справки по взаимодействию с ботом.
Настроить профиль пользователя (очищает все сохранённые ранее данные).
Пользователю предлагается ввести:
- Вес (в кг)
- Рост (в см)
- Возраст
- Среднее время активности в день
- Город проживания
- Цель потребления калорий (по желанию, может вычисляться автоматически)
Все введённые данные проверяются на валидность.
На основе введённых данных вычисляются дневные цели по потреблению воды и калорий.
-
Вычисление цели потребления воды:
$\text{water target} = \text{weight} * 30$ $+ 500$ за каждые 30 минут дневной активности;$+ 750$ , если текущая температура в городе проживания больше 25°C. -
Вычисление цели потребления калорий:
$\text{calorie target} = 10 * \text{weight} + 6.25 * \text{height} - 5 * \text{age}$
Записать потребление воды.
Записать приём пищи.
Калорийность вычисляется при помощи стороннего API.
После запроса к API пользователь может подтвердить или отменить запись приёма пищи.
Записать физическую тренировку.
Интенсивность тренировок вычисляется при помощи стороннего API.
После запроса к API пользователь может подтвердить или отменить запись тренировки.
Каждые 30 минут записанной тренировки дополнительно добавляют 200 мл к норме выпитой воды в данный день.
Вывести прогресс в выполнении дневных целей.
Выводимая информация:
- Выпито воды за день (мл)
- Дневная цель потребления воды (мл)
- Поглощено калорий за день (ккал)
- Дневная цель потребления калорий (ккал)
- Сожжено активных калорий за день (ккал)
Отменить текущее действие. Отменить можно настройку профиля и запись еды и тренировок.





