Skip to content

yegerless/tg_bot_fwa_tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tg_bot_fwa_tracker

Телеграм бот для мониторинга выпитой воды, а также потребленных и сожженных калорий.

Инуструкция по запуску бота:

  1. Склонируйте репозиторий на ваш компьютер или сервер при помощи команды:
git clone git@github.com:yegerless/tg_bot_fwa_tracker.git  
  1. Переместитесь в директорию проекта при помощи команды:
cd tg_bot_fwa_tracker  
  1. Создайте файл .env, в котором пропишите следующие секреты:
BOT_TOKEN='Ваш токен телеграм-бота' 
OW_API_KEY='Ваш API KEY для OpenWeather API'  
NINJAS_API_KEY='Ваш API KEY для NINJAS API'  
EDAMAM_APP_ID='ID вашего приложения для Edamam API'  
EDAMAM_API_KEY='Ваш API KEY для Edamam API'  
  1. Создайте docker image (у вас должен быть установлен docker engine) при помощи команды:
docker build . -t tg_bot_fwa_tracker  
  1. Запустите docker container с ботом при помощи команды:
docker run tg_bot_fwa_tracker  

Краткое описание команд в телеграме, с которыми работает бот:

  • /set_profile – создание профиля, бот последовательно запрашивает данные пользователя,
  • /log_water <количество> – логгирование выпитой воды, бот сохраняет переданное количество воды в мл,
  • /log_food <название продукта> – логгирование съеденных продуктов, запрашивает данные о количестве съеденного продукта в граммах,
  • /log_workout <тип тренировки> <время (мин)> – логгирование физической активности, бот сохраняет значение количества сожженных калорий, расчитанное по переданным данным,
  • /check_progress – вывод информации о воде и калориях за сегодняшний день,
  • /cancel - отмена ввода информации (при создании профиля или добавлении съеденного продукта),
  • /water_chart - возвращает график потребляемой воды за последние 7 дней,
  • /calories_chart - возвращает график полученных и сожженных калорий за последние 7 дней.

Краткая структура проекта:

-bot/
--| -handlers/
----| -base_handlers.py - содержит роутер с обработчиками команд /start и /cancel
----| -profile.py - содержит роутер с обработчиками команд по созданию профиля
----| -progress_charts.py - содержит роутер с обработчиками команд для создания графиков
----| -tracker.py - содержит роутер с обработчиками команд для логирования воды, калорий и активности, а также запроса сводной статистики за день
--| -middleware/
----| -middleware.py - содержит мидлварь, которая логгирует полученные сообщения в консоль и файл logs.log
--| -static/
----| -start.md - файл с текстом приветственного сообщения, которое отправляется по команде /start
--| -utils/
----| -utils.py - файл с функциями для запросов к разным API и обработки данных, получаемых от пользователя
----| -charts.py - файл с функциями, которые создают графики
--| -bot.py - основной файл с объектом бота и диспетчера
--| -config.py - конфигурационный файл с загрузкой секретов из переменных окружения
--| -storage.py - файл с имитацией хранилища данных (типо вместо БД)
-Dockerfile - инструкция по созданию docker image
-requirements.txt - файл с зависимостями
-logs.log - файл с логами (будет создан при запуске бота)


Особенности реализации бота:

  • Информация о погоде в городе проживания пользователя берется через запрос к OpenWeather API,
  • Информация о калорийности блюда получается по запросу к Edamam API; запрос может быть неструктурированным, у этого API есть NLP движок, который хорошо справляется с определением указанного продукта; перед отправкой полученный от пользователя запрос переводится на английский язык при помощи библиотеки googletrans,
  • Информация о сожженных калориях по физической активности получается по запросу к Ninjas API; перед отправкой полученный от пользователя запрос переводится на английский язык при помощи библиотеки googletrans.

About

Telegram bot for calculating water intake, calories and activity tracking

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published