GitHub - Scorb2008/DietBotAI · GitHub
Skip to content

Scorb2008/DietBotAI

Folders and files

Repository files navigation

🥗 Бот для диеты с ИИ-диетологом

Telegram-бот для управления диетой и получения персональных рекомендаций от ИИ-диетолога на базе Mistral AI. Бот работает с системой контроля доступа - только администратор может разрешать пользователям использовать бота.

✨ Возможности

Для пользователей:

  • 📊 Управление данными: добавление веса, роста, возраста, целей
  • 🎯 Целевой вес: установка и отслеживание целевого веса
  • 💪 Дневник тренировок: запись силовых показателей и упражнений
  • 🤖 ИИ-диетолог: получение персональных рекомендаций от Mistral AI
  • 📈 История: просмотр истории тренировок и запросов к ИИ
  • 🔢 Лимит запросов: до 10 запросов к ИИ на пользователя

Для администратора:

  • 👥 Управление доступом: одобрение/отклонение заявок пользователей
  • 📋 Список пользователей: просмотр всех пользователей с доступом
  • 📊 Статистика: общая статистика по боту
  • 🎛️ Панель управления: удобный интерфейс с inline-кнопками
  • 👤 Доступ к функциям: администратор может использовать все функции пользователя

🛠️ Технологии

  • Python 3.x - основной язык
  • aiogram 3.15.0 - современная библиотека для Telegram Bot API
  • aiosqlite - асинхронная работа с SQLite
  • Mistral AI - ИИ-диетолог для генерации рекомендаций
  • pydantic-settings - управление конфигурацией
  • httpx - асинхронные HTTP-запросы

📋 Требования

  • Python 3.8 или выше
  • Telegram Bot Token (получить у @BotFather)
  • Mistral AI API Key (получить на console.mistral.ai)
  • Ваш Telegram User ID (получить у @userinfobot)

📦 Установка

  1. Клонируйте репозиторий или скачайте файлы проекта

  2. Установите зависимости:

pip install -r requirements.txt
  1. Настройте переменные окружения:

Создайте файл .env на основе .env.example:

cp .env.example .env

Откройте .env и заполните следующие параметры:

# Токен бота от @BotFather
BOT_TOKEN=your_bot_token_here

# Ваш Telegram User ID (получить у @userinfobot)
ADMIN_ID=123456789

# API ключ от Mistral AI (получить на https://console.mistral.ai/)
MISTRAL_API_KEY=your_mistral_api_key_here

🚀 Как запустить

Запустите бота командой:

python -m src.main

Бот запустится и начнет обрабатывать сообщения. В консоли появится сообщение:

INFO - Bot started successfully

📱 Использование

Первый запуск (для администратора):

  1. Откройте бота в Telegram
  2. Отправьте команду /start
  3. Вы увидите панель администратора с кнопками управления

Для обычных пользователей:

  1. Откройте бота в Telegram
  2. Отправьте команду /start
  3. Вы увидите сообщение о том, что заявка отправлена администратору
  4. Дождитесь одобрения от администратора
  5. После одобрения снова отправьте /start для доступа к функциям

Функции администратора:

  • 📋 Заявки на доступ - просмотр и одобрение новых пользователей
  • 👥 Все пользователи - список всех пользователей с доступом
  • 📊 Статистика - общая статистика по боту
  • 👤 Пользовательское меню - доступ к функциям обычного пользователя

Функции пользователя:

  • 👤 Мои данные - управление личными данными:

    • ⚖️ Добавить вес
    • 📏 Добавить рост
    • 🎂 Добавить возраст
    • 🎯 Добавить цель
    • 🎯 Целевой вес
    • 💪 Добавить тренировку
    • 📜 История тренировок
  • 🤖 ИИ-Диетолог - работа с ИИ:

    • ❓ Задать вопрос диетологу
    • 📜 История запросов
    • 📊 Отслеживание лимита запросов (10 на пользователя)

🎯 Примеры вопросов к ИИ-диетологу

  • "Какой рацион мне подходит для набора мышечной массы?"
  • "Сколько калорий мне нужно потреблять для похудения?"
  • "Какие продукты лучше есть перед тренировкой?"
  • "Как правильно распределить белки, жиры и углеводы?"
  • "Какие добавки мне нужны для набора массы?"

📂 Структура проекта

.
├── src/
│   ├── main.py                    # Точка входа в приложение
│   ├── config/
│   │   └── settings.py            # Настройки и конфигурация
│   ├── handlers/
│   │   ├── menu_handler.py        # Обработка меню и навигации
│   │   ├── admin_handler.py       # Функции администратора
│   │   ├── user_data_handler.py   # Управление данными пользователя
│   │   └── diet_ai_handler.py     # Работа с ИИ-диетологом
│   ├── keyboards/
│   │   └── inline.py              # Inline-клавиатуры
│   ├── services/
│   │   ├── access_service.py      # Управление доступом
│   │   └── mistral_service.py     # Интеграция с Mistral AI
│   └── storage/
│       └── db.py                  # Работа с базой данных
├── data/
│   └── bot.db                     # База данных SQLite (создается автоматически)
├── .env                           # Переменные окружения (создать вручную)
├── .env.example                   # Пример файла с переменными
├── requirements.txt               # Зависимости Python
└── README.md                      # Документация

⚙️ Настройки (опционально)

В файле .env можно настроить дополнительные параметры:

# Путь к базе данных (по умолчанию: data/bot.db)
DB_PATH=data/bot.db

# Максимальное количество запросов к ИИ на пользователя (по умолчанию: 10)
MAX_REQUESTS_PER_USER=10

# Модель Mistral AI (по умолчанию: mistral-large-latest)
MISTRAL_MODEL=mistral-large-latest

# Максимальное количество токенов в ответе ИИ (по умолчанию: 500)
MISTRAL_MAX_TOKENS=500

# Таймаут запросов в секундах (по умолчанию: 30)
REQUEST_TIMEOUT=30

🗄️ База данных

Бот использует SQLite для хранения данных. База создается автоматически при первом запуске в папке data/.

Таблицы:

  • users - информация о пользователях и их доступе
  • user_data - личные данные пользователей (вес, рост, цели)
  • workout_records - записи о тренировках
  • ai_requests - история запросов к ИИ

🔒 Безопасность

  • Токен бота и API ключи хранятся в .env файле (не коммитьте его в Git!)
  • Доступ к боту контролируется администратором
  • Лимит запросов к ИИ предотвращает злоупотребление
  • Все данные хранятся локально в SQLite

🐛 Решение проблем

Бот не запускается:

  • Проверьте правильность токена бота в .env
  • Убедитесь, что установлены все зависимости: pip install -r requirements.txt
  • Проверьте версию Python (требуется 3.8+)

ИИ не отвечает:

  • Проверьте правильность API ключа Mistral AI в .env
  • Убедитесь, что у вас есть доступ к API Mistral AI
  • Проверьте интернет-соединение

Пользователь не может получить доступ:

  • Убедитесь, что администратор одобрил заявку через панель управления
  • Проверьте, что ADMIN_ID в .env соответствует вашему Telegram User ID

📝 Лицензия

Этот проект создан в образовательных целях.

🤝 Поддержка

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


Приятного использования! 🥗💪# DietBotAI

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages