Сложные обработчики

Пример сложной логики

def complex_message_example(bot, message):
    first_message = messages.create_message(
        text='Первая часть сообщения',
        sender=bot,
    )
    keyboard = keyboards.reply.Keyboard(
        name='Пример клавиатуры',
        buttons=[
            keyboards.reply.Button('Нажми меня 🔍'),
        ]
    )
    first_message = messages.add_keyboard(first_message, keyboard)
    chat = actions.send_message(message.chat, first_message)

    file_path = Path(settings.BASE_DIR) / 'static' / 'logo_1280_640.png'
    caption = messages.create_message(
        'Пример <b>комплексного</b> сообщения',
        bot,
        format_type='HTML'
    )
    image = messages.create_image(bot, file_path, caption)

    keyboard = keyboards.inline.Keyboard(
        buttons=[
            keyboards.inline.Button('Нажми меня', 'put_on_me'),
        ]
    )
    image = messages.add_keyboard(image, keyboard)
    return actions.send_image(chat, image)

Пример теста

def test_complex_message_example(bot_client, chat):
    """
    Test /complex_message
    """
    chat = asserts.assert_command_was_handled(
        '/complex_message',
        chat,
        bot_client,
    )
    asserts.assert_chat_messages_count(chat, 3)
    last_message = chats.get_last_message(chat)
    assert isinstance(last_message, messages.Image)
    assert 'logo_1280_640.png' in str(last_message.file_path)
    assert last_message.caption is not None
    assert 'Пример <b>комплексного</b> сообщения' == last_message.caption.text
    asserts.assert_chat_keyboard_name(chat, 'Пример клавиатуры')
    keyboard = asserts.assert_chat_keyboard_len(chat, 1)
    assert 'Нажми меня 🔍' == keyboard.buttons[0].text
    asserts.assert_chat_last_message_keyboard_len(chat, 1)