Можно ли отследить текст нажатой инлайн кнопки в телеграмм?
У меня в боте используется всего в 1 месте выбор по тексту (9 вариантов ответа). И чтобы оставить формат всего бота в инлайн кнопках, то как можно отследить текст нажатой инлайн кнопки? (Это кнопка, которая появляется вместе с сообщением, а не под строкой ввода).
Я хочу применить 1 коллбек ко всем 9 кнопкам (чтобы не делать на каждую кнопку работу с колбеком), но записывать в базу ответ исходя от названия нажатой инлайн кнопки.
Пользуюсь на данный момент Aiogram-ом
Дополнено:
Все эти 9 кнопок выполняют 1 действие, просто информация, которую они должны записать, такая же, как и название кнопки.
К примеру, я прошу указать в каком районе я живу, а районов 9. Мне проще сделать 1 call на все 9 кнопок, а передавать в запись просто название нажатой кнопки.
Не надо применять один callback_data ко всем кнопкам! Именно callback_data и используется для определения, какая кнопка нажата.
Например, можно назначить кнопкам call:1 ... call:9 и обрабатывать в зависимости от номера, а глобально ловить по тому, что call.data начинается на 'call:':
if call.data.startswith('call:'):
button_number = int(call.data[5:])
Я знаю как работает call, я говорю, что все эти 9 кнопок выполняют 1 действие, просто информация, которую они должны записать такая же, как и название кнопки.
К примеру, я прошу указать в каком районе я живу, а районов 9. Мне проще сделать 1 call на все 9 кнопок, а передавать в запись просто название нажатой кнопки.
Делать подстрочные кнопки тоже не вариант, а делать 9 одинаковых функций как-то не комельфо, мне кажется.
По этому, я хотел бы узнать, возможно ли как-то достать название нажатой кнопки
Я знаю что такое callback_data, просто на всех 9 кнопках выполняется 1 и то же действие, и было бы проще сделать 1 call для всех, а передавать просто текст самой нажатой кнопки. Если такое возможно. Я пока что не нашёл
Роман Бурч, ну при создании кнопок добавляете текст и в callback_data тоже. Если у вас один обработчик, это не значит, что для него callback_data должны быть одинаковыми. Пусть они начинаются одинаково и будет фильтр типа @dp.callback_query_handler(text_startswith='edit')