Skip to content

NikolayNyunin/python-homework-2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание №2 (Applied Python)

Python

Оглавление

Описание

Telegram-бот для отслеживания потребления воды и расхода и потребления калорий.

Ссылка в Telegram — @python_homework_2_bot.

Бот может довольно медленно отвечать на сообщения (или вообще не отвечать), потому что развёрнут на бесплатном хостинге.

Используемые API

В проекте используются следующие условно-бесплатные API:

  1. OpenWeatherMap Weather API - получение данных о погоде;
  2. CalorieNinjas Nutrition API - получение данных о калорийности пищи;
  3. 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-контейнера можно воспользоваться командами:

docker build -t health_bot .
docker run health_bot

Описание команд для бота

/start

Начало работы с ботом.

/help

Получение справки по взаимодействию с ботом.

/set_profile

Настроить профиль пользователя (очищает все сохранённые ранее данные).

Пользователю предлагается ввести:

  • Вес (в кг)
  • Рост (в см)
  • Возраст
  • Среднее время активности в день
  • Город проживания
  • Цель потребления калорий (по желанию, может вычисляться автоматически)

Все введённые данные проверяются на валидность.

На основе введённых данных вычисляются дневные цели по потреблению воды и калорий.

  • Вычисление цели потребления воды: $\text{water target} = \text{weight} * 30$

    $+ 500$ за каждые 30 минут дневной активности;

    $+ 750$, если текущая температура в городе проживания больше 25°C.

  • Вычисление цели потребления калорий: $\text{calorie target} = 10 * \text{weight} + 6.25 * \text{height} - 5 * \text{age}$

/log_water <объём воды в мл>

Записать потребление воды.

/log_food <название блюда на английском> <размер порции в г>

Записать приём пищи.

Калорийность вычисляется при помощи стороннего API.

После запроса к API пользователь может подтвердить или отменить запись приёма пищи.

/log_workout <тип тренировки на английском> <время в мин>

Записать физическую тренировку.

Интенсивность тренировок вычисляется при помощи стороннего API.

После запроса к API пользователь может подтвердить или отменить запись тренировки.

Каждые 30 минут записанной тренировки дополнительно добавляют 200 мл к норме выпитой воды в данный день.

/check_progress

Вывести прогресс в выполнении дневных целей.

Выводимая информация:

  • Выпито воды за день (мл)
  • Дневная цель потребления воды (мл)
  • Поглощено калорий за день (ккал)
  • Дневная цель потребления калорий (ккал)
  • Сожжено активных калорий за день (ккал)

/cancel

Отменить текущее действие. Отменить можно настройку профиля и запись еды и тренировок.

Примеры работы

Начало работы с ботом:

Example 1

Команда /set_profile:

Example 2

Команда /log_water:

Example 3

Команда /log_food:

Example 4

Команда /log_workout:

Example 5

Команда /check_progress:

Example 6

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published