Не работает сallback для кнопки (Aiogram) созданный в цикле

Я пишу Бота для Telegram на python aiogram. У меня есть функция которая по сути создаёт клавиатуру и callback к ней. Функция принимает список из атрибутов и возвращает объект клавиатуры, а Сallback она должна сразу отправлять в Dispatcher. Все работает, но есть одна проблема, callback работает только у последней из созданных кнопок.

Вот как выглядит код функции:

from aiogram.types import CallbackQuery, Message,\
    ReplyKeyboardMarkup,ReplyKeyboardRemove,     \
    InlineKeyboardButton, InlineKeyboardMarkup   \

from main import  dp, bot



def Keyboard(kb_config):
    keyboard = InlineKeyboardMarkup()

    for rows in kb_config:
        keyboard.add(InlineKeyboardButton(
            callback_data=rows[0][1],
            text=rows[0][1]))

        for atr in rows[1:]:
            btn = InlineKeyboardButton(
            callback_data=atr[0],
            text=atr[1])
            keyboard.insert(btn)


        for atr in rows:
            @dp.callback_query_handler(lambda c: c.data == atr[0])
            async def callback(callback_query: CallbackQuery):
                await bot.answer_callback_query(callback_query.id)
                await bot.send_message(callback_query.from_user.id,
                text=atr[2],
                reply_markup=atr[3])

    return keyboard

Вот код где она вызывается:

from aiogram.types import CallbackQuery, Message

    from main import  dp, bot
    
    from keyboard import Keyboard
    
    @dp.message_handler(commands=['Start'])
    async def process_admin_command(message: Message):
        await bot.send_photo(
        chat_id=message.from_user.id,
        photo="AgACAgIAAxkBAAIGqmA4Bdp4L1gjNomGkCELzwulilJjAAJktzEbmQLBSZnjBqQTXT9b6Epdmi4AAwEAAwIAA20AA5myBQABHgQ",
        reply_markup=Keyboard([[
                            ["1","кнопка1","текст сообщения",None],
                            ["2","кнопка2","текст сообщения",None],
                            ["3","кнопка3","текст сообщения",None]
                            #[callback_data,text,Текст в Callback, клавиатура в Callback]
                            ]]),
        caption="Описание бота")

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

Автор решения: 5c0rp
from aiogram import Bot,  Dispatcher, executor, types

bot = Bot('543240427:AAEYnOxVx5pvNA9cUoBTqrXNmceHTRm0chg')
dp = Dispatcher(bot)


def keyboard(kb_config):
    _keyboard = types.InlineKeyboardMarkup()

    for rows in kb_config:
        btn = types.InlineKeyboardButton(
            callback_data=rows[0],
            text=rows[1]
        )
        _keyboard.insert(btn)

    return _keyboard


@dp.callback_query_handler()
async def callback(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id, text=callback_query.data)
    await bot.send_message(callback_query.from_user.id, text=callback_query.data)


@dp.message_handler(commands=['start'])
async def process_admin_command(message: types.Message):
    await bot.send_photo(
        chat_id=message.from_user.id,
        photo="https://icdn.lenta.ru/images/2020/07/13/16/20200713161106967/square_320_4dd6db2859b29f4b1ba2d684155a5cc6.png",
        reply_markup=keyboard([
            ["1", "кнопка1", "текст сообщения", None],
            ["2", "кнопка2", "текст сообщения", None],
            ["3", "кнопка3", "текст сообщения", None]
        ]),
        caption="Описание бота"
    )

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
→ Ссылка