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).
Деталі роботи
Бюджет 2500 UAH
Додано 18 жовтня 2025
154 перегляди
Фрилансер
Dmytro Romanchuk
Україна Черкаси  7  0

Трохи зайнятий Трохи зайнятий
7 Сейфів завершено
На сервісі 1 рік