Почему может не работать inline button telegram?

Пишу бота для telegram. Решил в качестве кнопок использовать inline. Callback написал, но кнопка почему то все еще не работает, что может быть не так в коде. БОТ ПИШЕТСЯ ИСКЛЮЧИТЕЛЬНО В УЧЕБНЫХ ЦЕЛЯХ.

class OrderTshirt(StatesGroup):
waiting_for_tshirt_name = State()
waiting_for_tshirt_size = State()


async def tshirt_start(message: types.Message):
    # keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard = types.InlineKeyboardMarkup()
    for name in available_tshirt_names:
        keyboard.add(types.InlineKeyboardButton(text=name, callback_data=name))
    await message.answer("Выберите футболку:", reply_markup=keyboard)
    await OrderTshirt.waiting_for_tshirt_name.set()


async def tshirt_chosen(message: types.Message, state: FSMContext):
    if message.text.lower() not in available_tshirt_names:
        await message.answer("Пожалуйста, выберите футболку, используя клавиатуру ниже.")
        return
    await state.update_data(chosen_tshirt=message.text.lower())

    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    for tshirt in available_tshirt_sizes:
        keyboard.add(tshirt)
        await OrderTshirt.next()
    await message.answer("Теперь выберите размер:", reply_markup=keyboard)


async def tshirt_size_chosen(message: types.Message, state: FSMContext):
    if message.text not in available_tshirt_sizes:
        await message.answer("Пожалуйста, выберите размер, используя клавиатуру ниже.")
        return
    user_data = await state.get_data()
    await message.answer(f"Вы заказали {message.text.lower()} футболку {user_data['chosen_tshirt']}.\n"
                     f"Попробуйте теперь заказать напитки: /drinks", reply_markup=types.ReplyKeyboardRemove())
    await state.finish()


def register_handlers_tshirt(dp: Dispatcher):
    dp.register_message_handler(tshirt_start, commands="tshirt", state="*")
    dp.register_message_handler(tshirt_chosen, state=OrderTshirt.waiting_for_tshirt_name)
    dp.register_message_handler(tshirt_size_chosen, state=OrderTshirt.waiting_for_tshirt_size)

def register_callback_tshirt(dp: Dispatcher):
    for i in available_tshirt_names:
        dp.callback_query_handler(text=i)
    for i in available_tshirt_sizes:
        dp.callback_query_handler(text=i)

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

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

Потому что как минимум не callback_query_handler, а register_callback_query_handler. И более того вы даже название функции которая обрабатывает этот колбек не вписали.
Хотя честно говоря способ вы выбрали конечно тот ещё. Ведь можно и проще сделать.

# функция обработчик кнопки
@dp.callback_query_handler(text_startswith="names_tshirt:")
async def tshirt_call(call: types.CallbackQuery):
    name_tshirt = call.data.split(":")[1]
    ...

async def tshirt_start(message: types.Message):
    # keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard = types.InlineKeyboardMarkup()
    for name in available_tshirt_names:
        keyboard.add(types.InlineKeyboardButton(
            text=name, 
            callback_data=f"names_tshirt:{name}"))
    await message.answer("Выберите футболку:", reply_markup=keyboard)
    await OrderTshirt.waiting_for_tshirt_name.set()


→ Ссылка