Сложные обработчики
Файл links.py. Связи обработчиков для всех примеров ниже
from telegram_framework import links
from . import examples
bot_links = [
links.on_command(
examples.complex_message_example,
'complex_message',
'Пример всех функций в одном месте'
),
]
Пример сложной логики
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)