Переливаются кнопки в телеграмм боте aiogram

Проблема собственно в шапке - при нажатии кнопки курсовая (на самом деле любой инлайн кнопки, но для примера возьмём эту кнопку) она переливается секунд 20 и потом перестает.

Демонстрация проблемы

Вопрос в следующем: как сделать так чтобы кнопка выполнила свою функцию, но при этом не переливалась?

Код связанный с инлайн клавиатурой:

# курсовая
kurs_button = InlineKeyboardButton(
    text='Курсовая',
    callback_data='kurs_button'
)

# диплом
diplom_button = InlineKeyboardButton(
    text='Диплом',
    callback_data='dipl_button'
)

# реферат
ref_button = InlineKeyboardButton(
    text='Реферат',
    callback_data='ref_button'
)

# научная статья
science_button = InlineKeyboardButton(
    text='Науч. статья',
    callback_data='science_button'
)

service_kb = InlineKeyboardMarkup(inline_keyboard=[[kurs_button, diplom_button, ref_button, science_button], [cancel_button]])

Код связанный с самой кнопкой:

# вопрос про тему
@router.callback_query(lambda c: c.data == 'kurs_button', StateFilter(Universal.choice))    
async def choose_kurs(callback_query: types.CallbackQuery, state: FSMContext):
    global TOTAL
    TOTAL = 1500
    await callback_query.message.answer('Вы выбрали курсовую работу, пожалуйста ответьте на несколько вопросов, чтобы мы могли оценить вашу работу\n')
    await fill_theme(callback_query, state)

async def fill_theme(callback_query: types.CallbackQuery, state: FSMContext):
    await callback_query.message.answer('Напишите тему вашей курсовой.', reply_markup=cancel_kb)
    await state.set_state(KursStates.theme) # установления состояния "Тема"

В принципе всё работает, но вот конкретно вот это переливание хотелось бы убрать.


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

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

Клиент телеграмма ожидает подтверждения, что событие нажатия на кнопку было обработана ботам. Если подтверждения не происходит, кнопка продолжает "анимироваться" пока не будет получено какое ни будь новое событие от бота.

В общем, если открыть документацию: то можно прочитать, что await callback_query.answer() можно отправить без параметров, что собственно и будет сигнализировать о том, что событие нажатия на кнопку было обработано.

@router.callback_query(lambda c: c.data == 'kurs_button', StateFilter(Universal.choice))    
async def choose_kurs(callback_query: types.CallbackQuery, state: FSMContext):
    global TOTAL
    TOTAL = 1500

    await callback_query.answer() # +++
    
    await callback_query.message.answer('Вы выбрали курсовую работу, пожалуйста ответьте на несколько вопросов, чтобы мы могли оценить вашу работу\n')
    await fill_theme(callback_query, state)
→ Ссылка