Запуск функции при нажатии на кнопку в aiogram

Подскажите пожалуйста. Как в aiogram при нажатии на кнопку, вызывать функцию. Сейчас имеется такой код :

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await bot.send_message(message.from_user.id, '? Привет {0.first_name}', reply_markup=kb_main)

При нажатии на старт , появляется меню, и вместо названия кнопок, у меня идут названия команд

введите сюда описание изображения

То есть при нажатии на ту или иную кнопку, срабатывают команды, там как вместо текста идет прямое название команды.

Как сделать так, чтобы название кнопок было любое, но при нажатии на ту или иную кнопку, вызывалась нужная команда?

введите сюда описание изображения

То есть если я нажал на Test1 ( кнопку ) , чтобы функция /test1 сразу запустилась, а не вывелась в чат.

на примере вот такого метода

async def bot_text(message: types.Message):
if message.text == 'Test1':
    await bot.send_message(message.from_user.id, '/Test1')

Ответы (1 шт):

Автор решения: nomnoms12

При создании кнопки вы можете указать callback_data, который будет связан с этой кнопкой:

command = CallbackData('function')
button = InlineKeyboardButton('Любое', callback_data=command.new(function='test'))

Для обработки вам понадобится callback_query_handler:

@dp.callback_query_handler(command.filter(function='test'))
async def test(query: types.CallbackQuery, callback_data: dict):
    pass
→ Ссылка