def abilities(turn: Turn): turn.response_text = 'Я помогаю вам научиться хорошей растяжке - чтобы начать заниматься, скажите "тренировка".' \ '\nТакже вы можете ознакомиться с рекомендациями по разминке, сказав "разминка".' \ '\nВ разделе "лайфхаки" можно получить советы как выстроить свой план тренировок более эффективно.' \ '\nЕщё есть разделы "результаты", "правила" и "противопоказания".' turn.response_text += '\nРассказать правила тренировки?' turn.stage = 'suggest_rules' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)
def rules(turn: Turn): turn.response_text = 'Перед началом всегда разминаемся.\ \nРастяжки с первой по пятую - это ваши ОСНОВНЫЕ РАСТЯЖКИ, вы должны делать их каждый день. \ Первые 5 дней вы делаете первые 5 растяжек как ежедневное комбо! \ Затем, начиная с 6-го дня, вы просто добавите одно упражнение.' turn.response_text += '\nРассказать про разминку?' turn.stage = 'suggest_warmup' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)
def warmup(turn: Turn): turn.response_text = 'Перед тем как начать, важно разогреть мышцы и суставы. ' \ 'Побегайте,попрыгайте на месте, приседайте.' \ 'Подумайте о своих мышцах, как о резиновых лентах, которые от природы эластичны. ' \ 'Если вы растянете их слишком далеко, прежде чем они будут готовы, ' \ 'они могут сломаться или получить травму. ' \ 'Уделите разминке как минимум 10 минут, прежде чем начать выполнять упражнения.' turn.response_text += '\nРассказать про противопоказания?' turn.stage = 'suggest_contra' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)
def about_results(turn: Turn): turn.response_text = 'Всегда нужно сравнивать результаты ДО и ПОСЛЕ, ' \ 'иначе как ты поймёшь, что твой прогресс становиться с каждым днём лучше. ' \ '\nСделай вот что: после того как мы провели первую тренировку, ' \ 'сделай фото своего продольного шпагата, ' \ 'и после прохождения наших занятий я тебе напомню о нём. ' \ '\nМы сравним результаты, и даю тебе слово, ты удивишься своему прогрессу!' turn.response_text += '\nПоделиться с вами лайфхаком про растяжку?' turn.stage = 'suggest_hack' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)
def morning_show(turn: Turn): ex: Exercise = random.choice(list(EXERCISES.values())) turn.response_text = f'А теперь - упражнение из навыка "Шпагат за месяц".\n{ex.text}' now = datetime.utcnow() turn.show_item_meta = dict( content_id=str(uuid4()), title='Упражнение на растяжку', # title_tts='Упражнение на растяжку', publication_date=str(now).replace(' ', 'T') + 'Z', # expiration_date=str(now + timedelta(days=7)) + 'Z', )
def get_help(turn: Turn): turn.response_text = 'Чтобы начать заниматься, скажите "начать тренировку".' \ '\nЧтобы выбрать день занятий, скажите "день 1", "день 2", и так далее.' \ '\nЧтобы перейти к следующему упражнению, скажите "дальше".' \ '\nЕщё можете попросить меня поделиться лайфхаком, рассказать про разминку, правила тренировки, '\ 'противопоказания, и про то, как оценивать свои результаты.' turn.suggests.extend(MENU_SUGGESTS)
def hello(turn: Turn): turn.response_text = 'Привет!' \ '\nВ этом навыке уникальная техника и простые упражнения, '\ 'выполняя которые, ты уже через 30 дней сможешь сесть на шпагат!' if turn.us.last_day == 30 and turn.us.day_is_complete: turn.response_text += f'\nВы уже выполнили всю программу. Начать с первого дня?' turn.suggests.append('да') turn.stage = 'suggest_restart' elif turn.us.last_day: turn.response_text += f'\nПродолжим с дня {turn.us.last_day + turn.us.day_is_complete}?' turn.suggests.append('да') turn.stage = 'suggest_start_training' else: turn.response_text += '\nСкажите "что ты умеешь", чтобы узнать больше, или "тренировка", чтобы начать растяжку.' turn.suggests.append('тренировка') turn.suggests.append('что ты умеешь') turn.suggests.extend(MENU_SUGGESTS)
def contra(turn: Turn): turn.response_text = 'Далеко не всем показано практиковать растяжку, различные асаны и садиться на шпагат. ' \ 'Если в этом списке Вы нашли свой “диагноз”, ' \ 'то это повод задуматься о целесообразности совершаемых действий. \ \nИтак, противопоказания: \ \n- артроз коленных суставов; \ \n- ювенальный ревматоидный артрит; \ \n- различные воспаления суставов; \ \n- гинекологические проблемы у девушек; \ \n- смещение коленной чашечки; \ \n- операция на крестообразной подколенной связке; \ \n- вес, отличный от нормы (значение выше 10 кг); \ \n- высокое давление.' turn.response_text += '\nРассказать, как оценивать результаты тренировок?' turn.stage = 'suggest_results' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)
def do_exercise(turn: Turn, day_id: int, step_id: int = None): step_id = step_id or turn.us.current_step or 0 if day_id == 31: turn.response_text = 'Вы закончили всю программу! Хотите начать заново с первого дня?' turn.stage = 'suggest_restart' turn.suggests.append('да') return if day_id not in EXERCISES: turn.response_text = 'Такого дня в программе тренировок нет! Назовите день от 1 до 30.' return last_ex: Exercise = EXERCISES[day_id] if step_id >= 7 or step_id >= 6 and day_id < 5: out = last_ex.out or random.choice(HINTS) turn.response_text = out turn.commands.append(tgalice.COMMANDS.EXIT) turn.us.day_is_complete = True return if step_id == 0: turn.response_text = f'Начинаем день {day_id}. ' \ f'\nДля начала разомнитесь: побегайте, попрыгайте, поприседайте. ' \ f'\nКогда будете готовы к растяжке, скажите "дальше".' turn.suggests.append('дальше') else: if step_id == 6: ex = last_ex else: ex = EXERCISES[step_id] if ex.full_text: turn.response_text = f'<text>{ex.text}</text><voice>{ex.full_text}</voice>' else: turn.response_text = ex.text turn.response_text += f'<speaker audio="{random.choice(COUNTERS)}">' if not ex.one_sided: turn.response_text += '<voice>Теперь другая сторона.</voice>' turn.response_text += f'<speaker audio="{random.choice(COUNTERS)}">' turn.image_id = ex.image step_id += 1 turn.us.current_step = step_id turn.us.last_day = day_id turn.stage = 'exercise' turn.suggests.append('дальше')
def respond(self, ctx: Context): t0 = time.time() uo = ctx.user_object or {} text, forms, intents = self.nlu(ctx) turn = Turn( ctx=ctx, text=text, intents=intents, forms=forms, user_object=uo, us=UserState.from_dict(uo.get('user_state', {})), ) logger.debug(f'current stage is: {turn.stage}') handler_name = self.cascade(turn) logger.debug(f"Handler name: {handler_name}") self.cascade.postprocess(turn) resp = turn.make_response() resp.updated_user_object['user_state'] = turn.us.to_dict() logger.debug(f'FULL RESPONSE TIME: {time.time() - t0}') logger.debug(f'final state: {resp.updated_user_object}') resp.suggests = make_unique(resp.suggests) return resp
def morning_show(turn: Turn): ex: Exercise = random.choice(list(EXERCISES.values())) turn.response_text = f'А теперь - упражнение из навыка "Шпагат за месяц".\n{ex.text}'
def fallback(turn: Turn): turn.response_text = 'Я вас не понимаю. Скажите "тренировка", чтобы начать заниматься.' turn.suggests.extend(MENU_SUGGESTS)
def hacks(turn: Turn): hack = random.choice(HACKS) turn.response_text = f'{hack}\nРассказать ещё один лайфхак?' turn.stage = 'suggest_hack' turn.suggests.append('да') turn.suggests.extend(MENU_SUGGESTS)