コード例 #1
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)
コード例 #2
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)
コード例 #3
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
def warmup(turn: Turn):
    turn.response_text = 'Перед тем как начать, важно разогреть мышцы и суставы. ' \
                         'Побегайте,попрыгайте на месте, приседайте.' \
                         'Подумайте о своих мышцах, как о резиновых лентах, которые от природы эластичны. ' \
                         'Если вы растянете их слишком далеко, прежде чем они будут готовы, ' \
                         'они могут сломаться или получить травму. ' \
                         'Уделите разминке как минимум 10 минут, прежде чем начать выполнять упражнения.'
    turn.response_text += '\nРассказать про противопоказания?'
    turn.stage = 'suggest_contra'
    turn.suggests.append('да')
    turn.suggests.extend(MENU_SUGGESTS)
コード例 #4
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)
コード例 #5
0
ファイル: show.py プロジェクト: avidale/alice-stretching
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',
    )
コード例 #6
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
def get_help(turn: Turn):
    turn.response_text = 'Чтобы начать заниматься, скажите "начать тренировку".' \
        '\nЧтобы выбрать день занятий, скажите "день 1", "день 2", и так далее.' \
        '\nЧтобы перейти к следующему упражнению, скажите "дальше".' \
        '\nЕщё можете попросить меня поделиться лайфхаком, рассказать про разминку, правила тренировки, '\
        'противопоказания, и про то, как оценивать свои результаты.'
    turn.suggests.extend(MENU_SUGGESTS)
コード例 #7
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)
コード例 #8
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)
コード例 #9
0
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('дальше')
コード例 #10
0
 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
コード例 #11
0
def morning_show(turn: Turn):
    ex: Exercise = random.choice(list(EXERCISES.values()))
    turn.response_text = f'А теперь - упражнение из навыка "Шпагат за месяц".\n{ex.text}'
コード例 #12
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
def fallback(turn: Turn):
    turn.response_text = 'Я вас не понимаю. Скажите "тренировка", чтобы начать заниматься.'
    turn.suggests.extend(MENU_SUGGESTS)
コード例 #13
0
ファイル: menu.py プロジェクト: avidale/alice-stretching
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)