Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Это Telegram-бот, написанный на Python с использованием библиотеки python-telegram-bot. Его основная цель — предоставлять пользователям программы тренировок на основе их пола, цели (похудение, набор массы и т.д.), роста и веса. Для взаимодействия с пользователем бот использует пошаговый диалог (ConversationHandler), что делает процесс интуитивно понятным.

Основные компоненты и их назначение

Библиотека python-telegram-bot: Это основа, которая обеспечивает взаимодействие с Telegram API. Код использует ее асинхронную версию (async def), что является современной практикой.

ConversationHandler: Это ключевой элемент логики бота. Он позволяет создать "диалог" с пользователем, который состоит из нескольких шагов или "состояний". Бот последовательно задает вопросы и ждет ответов, переходя от одного состояния к другому.

Состояния (States):

Переменные SELECT_GENDER, GET_HEIGHT и т.д. — это уникальные идентификаторы для каждого шага разговора. Они помогают ConversationHandler понять, на каком этапе диалога находится пользователь и какую функцию вызывать следующей.

Клавиатуры (ReplyKeyboardMarkup):

Вместо того, чтобы заставлять пользователя вводить текст ("Мужчина", "Похудение"), бот предлагает готовые кнопки. Это уменьшает вероятность ошибок и делает интерфейс удобнее. В коде есть три разные клавиатуры: для выбора пола, для выбора цели мужчиной и женщиной.

Данные тренировок (male_programs, female_programs):

Это два больших словаря (dictionaries), которые являются "базой данных" бота. Они содержат готовые программы тренировок, структурированные по полу, цели и дням недели. В настоящее время эти данные жестко прописаны в коде.

Функции-обработчики (Handlers):

start: Запускает диалог, приветствует пользователя и предлагает выбрать пол.

select_gender, select_male_goal, select_female_goal: Обрабатывают выбор пользователя с клавиатуры, сохраняют данные (context.user_data) и задают следующий вопрос.

get_height, get_weight: Получают текстовые сообщения, преобразуют их в числа, проверяют на корректность и сохраняют.

show_workout_program: Финальная функция. Она собирает все сохраненные данные, рассчитывает Индекс Массы Тела (ИМТ) и находит соответствующую программу тренировок в словарях. После этого она формирует большое текстовое сообщение и отправляет его пользователю.

cancel: Позволяет пользователю в любой момент прервать диалог командой /cancel.

Логика работы (Пошаговый сценарий)

Пользователь отправляет команду /start.

Бот отвечает приветственным сообщением и показывает клавиатуру с кнопками "Мужчина" и "Женщина". Диалог переходит в состояние SELECT_GENDER.

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

В зависимости от выбора, бот показывает новую клавиатуру:

Для мужчин: "Похудение", "Набор".

Для женщин: "Похудение", "Тонус мышц".

Диалог переходит в состояние SELECT_MALE_GOAL или SELECT_FEMALE_GOAL.

Пользователь выбирает цель.

Бот сохраняет цель и просит ввести рост. Диалог переходит в состояние GET_HEIGHT.

Пользователь отправляет свой рост в сантиметрах. Бот проверяет, является ли это числом, и сохраняет его.

Бот просит ввести вес. Диалог переходит в состояние GET_WEIGHT.

Пользователь отправляет свой вес. Бот проверяет, является ли это числом, и сохраняет его.

Бот вызывает функцию show_workout_program, которая:

Рассчитывает ИМТ по формуле вес / (рост в метрах)².

Определяет категорию ИМТ ("Норма", "Ожирение" и т.д.).

На основе пола и цели находит нужную программу тренировок.

Формирует и отправляет финальное сообщение с ИМТ и программой на 3 дня.

Диалог завершается (ConversationHandler.END)
Детали работы
Бюджет 4000 UAH
Добавлена 1 января
92 просмотра
Фрилансер
Костя Романчук
Украина Киев
Нет отзывов

Немного занят Немного занят
На сервисе 9 месяцев 11 дней