Последовательность ввода данных

Последовательный ввод данных

def start_sequence_example(bot, message):
    keyboard = keyboards.force.Keyboard()
    message_with_text = messages.create_message('Как бы вас звали на букву "Л"?:', sender=bot)
    message_with_keyboard = messages.add_keyboard(message_with_text, keyboard)
    chat = actions.send_message(message.chat, message_with_keyboard)
    chat = actions.wait_response(bot, chat, sequence_first_name_example)
    return chat


def sequence_first_name_example(bot, message):
    first_name = message.text
    if first_name.startswith('Л'):
        chat = chats.add_note(message.chat, first_name=first_name)
        keyboard = keyboards.force.Keyboard()
        message_with_text = messages.create_message(
            'Какой бы была ваша фамилия на букву "Л"?:',
            sender=bot
        )
        message_with_keyboard = messages.add_keyboard(message_with_text, keyboard)
        chat = actions.send_message(chat, message_with_keyboard)
        chat = actions.wait_response(bot, chat, sequence_last_name_example)
        return chat

    keyboard = keyboards.force.Keyboard()
    message_with_text = messages.create_message(
        'Неверно введено имя, пожалуйста введите снова:',
        sender=bot
    )
    message_with_keyboard = messages.add_keyboard(message_with_text, keyboard)
    chat = actions.send_message(message.chat, message_with_keyboard)
    chat = actions.wait_response(bot, chat, sequence_first_name_example)
    return chat


def sequence_last_name_example(bot, message):
    last_name = message.text
    if last_name.startswith('Л'):
        first_name = chats.get_note(message.chat, 'first_name', '?')
        result_text = f'Привет, {first_name} {last_name}'
        message_with_text = messages.create_message(result_text, sender=bot)
        chat = actions.send_message(message.chat, message_with_text)
        return chat

    keyboard = keyboards.force.Keyboard()
    message_with_text = messages.create_message(
        'Неверно введена фамилия, пожалуйста введите снова:',
        sender=bot
    )
    message_with_keyboard = messages.add_keyboard(message_with_text, keyboard)
    chat = actions.send_message(message.chat, message_with_keyboard)
    chat = actions.wait_response(bot, chat, sequence_last_name_example)
    return chat

Пример теста

@pytest.mark.parametrize('command', [
    '/sequence_example',
    '/sequence_form_example',
])
def test_sequence_example(bot_client, chat, command):
    """
    Test /sequence_example
    """
    chat = asserts.assert_command_was_handled(
        command,
        chat,
        bot_client,
    )
    last_message = asserts.assert_chat_last_message_text_equal(
        chat,
        'Как бы вас звали на букву "Л"?:',
    )
    asserts.assert_keyboard_in_message(last_message)

    chat = asserts.assert_text_message_was_handled(
        'Жук',
        chat,
        bot_client,
    )
    last_message = chats.get_last_message(chat)
    assert 'Неверно введено имя, пожалуйста введите снова:' == last_message.text

    chat = asserts.assert_text_message_was_handled(
        'Лео',
        chat,
        bot_client,
    )
    last_message = chats.get_last_message(chat)
    assert 'Какой бы была ваша фамилия на букву "Л"?:' == last_message.text

    chat = asserts.assert_text_message_was_handled(
        'Жук',
        chat,
        bot_client,
    )
    last_message = chats.get_last_message(chat)
    assert 'Неверно введена фамилия, пожалуйста введите снова:' == last_message.text

    chat = asserts.assert_text_message_was_handled(
        'Лось',
        chat,
        bot_client,
    )
    last_message = chats.get_last_message(chat)
    assert 'Привет, Лео Лось' == last_message.text

    chat = asserts.assert_command_was_handled(
        '/start',
        chat,
        bot_client,
    )
    last_message = chats.get_last_message(chat)
    assert 'Привет, Я Demo Bot' in  last_message.text