March 14

Задача трекинг-бота

Необходимо разработать бота для похудения. Бот должен трекать (отслеживать) калории, вес и физическую активность человека.

Особенности

Бот на старте должен запрашивать:

  • текущий вес, уточнив, что измерять вес лучше в одно и то же время в сутках, например, утром, до еды и питья
  • уровень физической активности по пятибальной шкале от 1 до 5 включительно, где 1 min уровень активности (сидячая работа без спорта), 5 ежедневная тяжелая физическая работа (разгрузка вагонов или профессиональные ежедневные тренировки)

Текущий вес для расчёта базового метаболизма затем должен браться последний введённый, уровень физ активности надо давать возможность редактировать впоследствии.

Формула расчёта текущего базового метаболизма = текущий вес * (коэффициент активности плюс 20). Например, вес 90 кг, коэффициент активности по пятибальной шкале 1, значит базовый метаболизм = 90*(20+1) = 1890 kcal.

Ввод данных

Ввод данных — просто текстом, без кнопок и прочего, потому что так проще-быстрее-удобнее.

Типы вводимых ежедневно данных:

  • текущий вес
  • потреблённые калории (можно вводить несколько раз в течение суток)
  • калории физ активности

При вводе данных надо дать возможность ввести данные не за сегодня, а за вчера или позавчера. Только в прошлом, в будущее нельзя (указать «завтра» нельзя). Калории — kcal или ккал. Варианты, которые должны работать:

  • 1500 kcal вчера
  • 1500 ккал позавчера
  • вчера 1500 kcal
  • сегодня 1500 ккал
  • 1500 ккал сегодня

Надо давать редактировать сообщение со вводом данных — чтобы если опечатался и отправил, была возможность исправить.

На ввод данных надо отвечать подтверждением в фикс формате со статистикой по тому дню, для которого вводят данные:

Сегодня твой вес 80.4 кг, вы съели 1400 kcal и сделали 250 kcal активности.
Отлично, ты молодец!

Вот эта финальная часть «Отлично, ты молодец!», варианты следующие. D = съел - потратил, варианты:

  • D > 50 — «Кажется, сегодня ты облопался!»
  • -100 < D < 50 — «Сегодня ты не поправился!»
  • -490 < D < -100 — «Сегодня ты немножко молодец!»
  • -550 < D < -490 — «Отлично, ты молодец!»
  • D < -550 — «Ооо, тебе сегодня можно ещё покушать на ### kcal» (вывести тут разницу между текущим потреблением и базовый метаболизм минус 500 kcal)

Просмотр данных

Надо давать возможность посмотреть данные за последние 10 дней — все данные, то есть дата, вес, потребление, активность. Без пролистывания, чтобы все данные были в 1 сообщении и можно было их окинуть взглядом. Больше данных (больше чем 10 дней) можно давать смотреть как-то иначе, с пагинацией, или не давать такую возможность вовсе.

И график изменения веса за последние 10 дней. Чтобы он показывался прям в чате.

Экспорт

Надо давать экспортировать данные трекинга в CSV-формата. Колонки: дата, измеренный вес, потреблённые калории, калории физ активности.