@Elvira15

Как обработать последовательность inline клавиатур (python)?

Есть рабочий телеграмм бот с многоуровневой клавиатурой. Как сделать так чтобы если человек допустим нажал на кнопки 'Dolphin', 'Normal' и 'Yes' то выводилось сообщение "Мы предполагаем что у вашего дельфина аллергия"?
5fcbf011a40c2387317546.png
5fcbf021231c1598054703.png
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
Если кратко, то один из вариантов:
В callback_data передавать данные в json формате, по которым можно будет отследить на какой "стадии" сейчас находится пользователь в выборе ответов.
В вашем случае данные в json формате могут выглядеть, к примеру, следующим образом:
'{"animal_type": "Dolphin",
"temptemperature_type": "Normal",
"is_volmit: true"}
'

Json строка собирается из словаря и разбирается в словарь с помощью библиотеки json, методами dumps() и loads()

При нажатии на кнопку с выбором животного заполняется только первое поле, остальные можно заполнить None.
По сути выходит, что по callback_data каждой кнопки можно определить какой "путь" прошел пользователь до этого момента. И от этого уже плясать.

Можно также воспользоваться методом register_next_step_handler, но не уверен, что этот метод работает с inline кнопками
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Amoralny
@Amoralny
Python-разработчик
Проще но не идеально будет к callback_data = 'Yes' добавить какой нибудь маркер, например Dolphin и получится callback_data = 'Yes Dolphin'
Тогда можно будет под каждое животное сделать сообщение.

Однако, лучше изучить ООП. Здесь, на мой взгляд, с ним бы было проще)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы