Обработка сгенерированной CallbackData в aiogram

Имеется справочный телеграм бот. При нажатии кнопки "°/•Сложить скидки" он получает данные из БД и на их основе формирует инлайн клавиатуру, присваивая каждой кнопке название и CallbackData. Проблема в том что бот никак не реагирует на нажатия этой созданной клавиатуры. Код создания клавиатуры:

    from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
    from aiogram.utils.callback_data import CallbackData
    
    from misc.db_comands import get_all_stocks
    
    stocks_cd = CallbackData("show_stocks", "stocks_id")
    
    
    def make_callback_data(stocks_id: int = 0):
        return stocks_cd.new(stocks_id=stocks_id)
    
    
    async def choosing_promotion_keyboards():
        menu = InlineKeyboardMarkup()
        stocks = await get_all_stocks()
        for stock in stocks:
            button_text = f"{stock.name_stock}"
            callback_data = make_callback_data(stock.id)
    
            menu.row(
                InlineKeyboardButton(text=button_text, callback_data=callback_data)
            )
    
        return menu

Код обработчика:

from aiogram import types, Dispatcher
from aiogram.dispatcher.filters import CommandStart, Text

from keyboards.inline import choosing_promotion_keyboards, stocks_cd
from keyboards.reply import reply_markup
from misc.db_comands import get_stock


async def get_start(message: types.Message) -> None:
    await message.answer(f"Привет {message.from_user.first_name}!",
                         reply_markup=reply_markup)


async def change_stocks(message: types.Message) -> None:
    menu = await choosing_promotion_keyboards()
    await message.answer("Выбери нужную акцию⬇️", reply_markup=menu)


async def show_promotion(callback: types.CallbackQuery, callback_data: dict) -> None:
    stock_id = int(callback_data.get("stocks_id"))
    stock = await get_stock(stock_id)
    text = F"Вы выбрали {stock.name_stock}"
    await callback.message.edit_text(text)


def register_hendlers(dp: Dispatcher):
    dp.register_message_handler(get_start, CommandStart())
    dp.register_message_handler(change_stocks, Text(equals="°/•Сложить скидки"))
    dp.register_callback_query_handler(show_promotion, stocks_cd.filter())

Совершенно не понимаю где я делаю ошибку. Прошу помощи в этом вопросе.


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

Автор решения: Павел Репин

Нашел решение. В функции запуска бота вместо

try:
    await dp.start_polling(bot)
finally:
    await bot.close()

поставил

try:
    await dp.start_polling(bot)
finally:
    await bot.session.close()
→ Ссылка