Использование клавиатуры

Встроенная кнопка

def message_with_inline_keyboard_example(bot, message):
    keyboard = keyboards.inline.Keyboard(
        buttons=[
            keyboards.inline.Button('Нажми меня', 'put_on_me'),
        ]
    )
    message_with_text = messages.create_message('Пример сообщения с кнопкой', sender=bot)
    message_with_keyboard = messages.add_keyboard(message_with_text, keyboard)
    return actions.send_message(message.chat, message_with_keyboard)


def put_button_handler(bot, message):
    reply_message = messages.create_message(
        text='Вы нажали кнопку, а я обработал нажатие',
        sender=bot,
    )
    return actions.send_message(message.chat, reply_message)

Пример теста

def test_message_with_inline_keyboard_example(bot_client, chat):
    """
    Test /message_with_inline_keyboard: success
    """
    chat = asserts.assert_command_was_handled(
        '/message_with_inline_keyboard',
        chat,
        bot_client,
    )
    asserts.assert_chat_last_message_text_equal(
        chat,
        'Пример сообщения с кнопкой',
    )
    keyboard = asserts.assert_chat_last_message_keyboard_len(chat, 1)
    assert 'Нажми меня' == keyboard.buttons[0].text


def test_put_button_handler(bot_client, chat):
    """
    Test button "put_on_me": success
    """
    chat = asserts.assert_call_was_handled(
        'put_on_me',
        chat,
        bot_client,
    )
    asserts.assert_chat_last_message_text_equal(
        chat,
        'Вы нажали кнопку, а я обработал нажатие'
    )

Клавиатура (Внизу чата)

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


def put_keyboard_handler(bot, message):
    reply_message = messages.create_message(
        text='Вы нажали на клавиатуру, а я обработал нажатие и убрал клавиатуру',
        sender=bot,
    )
    reply_message = messages.add_keyboard(reply_message, keyboards.reply.EmptyKeyboard())
    return actions.send_message(message.chat, reply_message)

Пример теста

def test_message_with_reply_keyboard_example(bot_client, chat):
    """
    Test /message_with_reply_keyboard: success
    """
    chat = asserts.assert_command_was_handled(
        '/message_with_reply_keyboard',
        chat,
        bot_client,
    )
    asserts.assert_chat_last_message_text_equal(
        chat,
        'Пример сообщения с клавиатурой',
    )
    asserts.assert_chat_keyboard_len(chat, 1)
    keyboard = asserts.assert_chat_keyboard_name(chat, 'Пример клавиатуры')
    assert 'Нажми меня 🔍' == keyboard.buttons[0].text

def test_put_keyboard_handler(bot_client, chat):
    """
    Test text "Нажми меня 🔍": success
    """
    chat = asserts.assert_text_message_was_handled(
        'Нажми меня 🔍',
        chat,
        bot_client,
    )
    asserts.assert_chat_last_message_text_equal(
        chat,
        'Вы нажали на клавиатуру, а я обработал нажатие и убрал клавиатуру'
    )
    asserts.assert_keyboard_not_in_chat(chat)