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)
-
Клонируйте репозиторий или скачайте файлы проекта
-
Установите зависимости:
pip install -r requirements.txt- Настройте переменные окружения:
Создайте файл .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
- Откройте бота в Telegram
- Отправьте команду
/start - Вы увидите панель администратора с кнопками управления
- Откройте бота в Telegram
- Отправьте команду
/start - Вы увидите сообщение о том, что заявка отправлена администратору
- Дождитесь одобрения от администратора
- После одобрения снова отправьте
/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
