示例#1
0
def ask_city():
    yield say('А в каком городе ты живёшь?')
    while True:
        if names_repository.try_get_city(request.command) is not None:
            return request.command

        yield say('Я не знаю такого города. Назови его полное название.')
示例#2
0
def ask_if_greater_than(number):
    yield say(f'Ваше число больше {number}?', suggest('Ну да', 'Вроде нет'))

    while not request.has_lemmas('да', 'ага', 'нет', 'не'):
        yield say('Я вас не поняла. Скажите "да" или "нет"')

    return not request.has_lemmas('нет', 'не')
示例#3
0
def add_tags(profile):
    yield say('Расскажи, где ты работаешь или учишься?')
    profile['occupation'] = filter_stop_words(request.lemmas)

    yield say('Чем ты занимаешься в свободное время? Какие у тебя хобби?')
    profile['hobbies'] = filter_stop_words(request.lemmas)

    yield say('Какую музыку ты слушаешь? Назови пару исполнителей.')
    profile['music'] = filter_stop_words(request.lemmas)
示例#4
0
def ask_name():
    yield say('Я смогу тебе помочь! Как тебя зовут?',
              'Отлично! Назови свое имя.')
    while True:
        name = names_repository.try_get_name(request.command)
        if name is not None:
            return name

        yield say('Первый раз слышу такое имя. Назови как в паспорте написано.')
示例#5
0
def ask_gender():
    yield say('Привет! Кого ты ищешь - девушку или парня?',
              'Привет, кого будем искать? Девушку или парня?',
              suggest('Девушку', 'Парня'))
    while True:
        if request.has_lemmas('парень', 'человек', 'мч', 'мужчина'):
            return 'female'
        if request.has_lemmas('девушка', 'женщина'):
            return 'male'

        yield say('Скажи или слово "девушка", или слово "парень"',
                  suggest('Девушка', 'Парень'))
示例#6
0
def ask_phone():
    yield say('Отлично! Тебе осталось сообщить свой номер телефона. Начинай с "восьмёрки". ' +
              'Я проигнорирую все слова в твоей фразе, кроме чисел.')
    while True:
        phone = re.sub(r'\D', r'', request.command)

        yield say('Я правильно распознала твой номер телефона?',
                  suggest('Правильно', 'Давай ещё раз'))
        if request.has_lemmas('да', 'правильно'):
            return phone

        yield say('Скажи свой номер ещё раз')
示例#7
0
def ask_age():
    yield say('Сколько тебе лет?', 'Назови свой возраст.')
    while True:
        if not re.fullmatch(r'\d+', request.command):
            yield say('Назови число')
            continue
        age = int(request.command)

        if age < 18:
            yield say('Навык доступен только для людей не младше 18 лет, сорри :(',
                      end_session=True)
            return None
        if age > 100:
            yield say('Выглядишь моложе. Назови свой настоящий возраст :)')
            continue
        return age
示例#8
0
def run_script():
    yield say('Загадайте число от 1 до 100, а я его отгадаю. Готовы?')

    lo, hi = 1, 100
    while lo < hi:
        middle = (lo + hi) // 2
        yield say(f'Ваше число больше {middle}?',
                  suggest('Ну да', 'Вроде нет'))

        while not request.has_lemmas('да', 'ага', 'нет', 'не'):
            yield say('Я вас не поняла. Скажите "да" или "нет"')

        if request.has_lemmas('нет', 'не'):
            hi = middle
        else:
            lo = middle + 1

    yield say(f'Думаю, вы загадали число {lo}!', end_session=True)
示例#9
0
def run_script():
    yield from say_hi()

    lo, hi = 1, 100
    while lo < hi:
        middle = (lo + hi) // 2
        if (yield from ask_if_greater_than(middle)):
            lo = middle + 1
        else:
            hi = middle

    yield say(f'Думаю, вы загадали число {lo}!', end_session=True)
示例#10
0
def add_to_db(profile):
    session_id = request.session_id
    with profile_lock:
        profiles[session_id] = profile
        with open('profiles.json', 'w') as f:
            json.dump(profiles, f)

    if profile['gender'] == 'male':
        text = 'Ура, я добавила тебя в базу! ' + \
               'Как только навыком воспользуется подходящая тебе девушка, я сообщу ей твои контакты!'
    else:
        text = 'Ура, я добавила тебя в базу! ' + \
               'Как только навыком воспользуется подходящий тебе парень, я сообщу ему твои контакты!'
    yield say(text, end_session=True)
示例#11
0
def show_match(profile, best_candidate):
    if profile['gender'] == 'male':
        text = 'Кажется, я знаю одну девушку, которая может тебе понравиться. Её зовут {}, ей {}. ' \
               'Ты можешь позвонить ей по номеру: {}.'.format(
            best_candidate['name'].capitalize(), best_candidate['age'], best_candidate['phone'])
    else:
        text = 'Кажется, я знаю одного парня, который может тебе понравиться. Его зовут {}, ему {}. ' \
               'Ты можешь позвонить ему по номеру: {}.'.format(
            best_candidate['name'].capitalize(), best_candidate['age'], best_candidate['phone'])

    commons = set(profile['hobbies']) & set(best_candidate['hobbies'])
    if commons:
        text += '\n\nУ вас есть общие хобби: {}.'.format(', '.join(commons))

    commons = set(profile['music']) & set(best_candidate['music'])
    if commons:
        text += '\n\nВы любите одну и ту же музыку, например: {}.'.format(', '.join(commons))

    yield say(text, end_session=True)
示例#12
0
def run_script():
    yield say('Добрый день! Как вас зовут?')
    name = request.command

    yield say('Сколько вам лет?')
    while not request.matches(r'\d+'):
        yield say('Я вас не поняла. Скажите число')
    age = int(request.command)

    yield say('Вы любите кошек или собак?',
              suggest('Обожаю кошечек', 'Люблю собак'))
    while not request.has_lemmas('кошка', 'кошечка', 'собака', 'собачка'):
        yield say('У вас только два варианта - кошки или собаки')
    loves_cats = request.has_lemmas('кошка', 'кошечка')

    yield say(
        f'Рада познакомиться, {name}! Когда вам '
        f'исполнится {age + 1}, я могу подарить '
        f'{"котёнка" if loves_cats else "щенка"}!',
        end_session=True)
示例#13
0
def run_script():
    yield say('Добрый день! Как вас зовут?')
    name = request.command
示例#14
0
def say_hi():
    yield say('Загадайте число от 1 до 100, а я его отгадаю. Готовы?')
示例#15
0
def say_text(text, text_tts='', end_session=False):
    # say text and check answer for help
    tts = text_tts if text_tts else text
    yield say(text, tts=tts, end_session=end_session)
    if is_request_help(request):
        yield from say_help()