Использование клавиатуры
Файл links.py. Связи обработчиков для всех примеров ниже
from telegram_framework import links
from . import examples
bot_links = [
links.on_command(
examples.message_with_inline_keyboard_example,
'message_with_inline_keyboard', 'Сообщение с кнопкой'
),
links.on_command(
examples.message_with_reply_keyboard_example,
'message_with_reply_keyboard',
'Сообщение с клавиатурой',
),
links.on_text(
examples.put_keyboard_handler,
'Нажми меня 🔍'
),
links.on_call(
examples.put_button_handler, 'put_on_me'
),
]
Встроенная кнопка
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(self):
"""
Test /message_with_inline_keyboard: success
"""
chat = self.assertCommandWasHandled('/message_with_inline_keyboard', self.chat)
self.assertChatLastMessageTextEqual(
chat,
'Пример сообщения с кнопкой',
)
keyboard = self.assertChatLastMessageKeyboardLen(chat, 1)
self.assertEqual('Нажми меня', keyboard.buttons[0].text)
def test_put_button_handler(self):
"""
Test button "put_on_me": success
"""
chat = self.assertCallWasHandled('put_on_me', self.chat)
self.assertChatLastMessageTextEqual(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(self):
"""
Test /message_with_reply_keyboard: success
"""
chat = self.assertCommandWasHandled('/message_with_reply_keyboard', self.chat)
self.assertChatLastMessageTextEqual(
chat,
'Пример сообщения с клавиатурой',
)
self.assertChatKeyboardLen(chat, 1)
keyboard = self.assertChatKeyboardName(chat, 'Пример клавиатуры')
self.assertEqual('Нажми меня 🔍', keyboard.buttons[0].text)
def test_put_keyboard_handler(self):
"""
Test text "Нажми меня 🔍": success
"""
chat = self.assertTextMessageWasHandled('Нажми меня 🔍', self.chat)
self.assertChatLastMessageTextEqual(
chat,
'Вы нажали на клавиатуру, а я обработал нажатие и убрал клавиатуру'
)
self.assertKeyboardNotInChat(chat)