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

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

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(self):
        """
        Test /complex_message
        """
        chat = self.assertCommandWasHandled('/complex_message', self.chat)
        self.assertChatMessagesCount(chat, 3)
        last_message = chats.get_last_message(chat)
        self.assertIsInstance(last_message, messages.Image)
        self.assertIn('logo_1280_640.png', str(last_message.file_path))
        self.assertIsNotNone(last_message.caption)
        self.assertEqual('Пример <b>комплексного</b> сообщения', last_message.caption.text)
        self.assertChatKeyboardName(chat, 'Пример клавиатуры')
        keyboard = self.assertChatKeyboardLen(chat, 1)
        self.assertEqual('Нажми меня 🔍', keyboard.buttons[0].text)
        self.assertChatLastMessageKeyboardLen(chat, 1)