Как сделать обработчик колбеков в aiogram 3?

Переделайте пожалуйста код из aiogram 2 в aiogram 3, я не могу разобраться с этой документацией(

Вот клавиатура, но её я смог переделать

start_keyboard = InlineKeyboardMarkup(
inline_keyboard = [
    [
        InlineKeyboardButton(text = "You can choose this", callback_data="first"),
        InlineKeyboardButton(text = "Or this", callback_data="second")
    ]])

И вот хендлер

@dp.callback_query_handler(text_contains = "first") 
async def more_info(call: CallbackQuery):
    message_chat_id = call["from"]["id"]
    await bot.send_message(chat_id = message_chat_id,
                           text = "test",
                           reply_markup = know_more_keyboard, 
                           parse_mode=ParseMode.MARKDOWN)

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

Автор решения: Clark Devlin

https://mastergroosha.github.io/aiogram-3-guide/ тут все довольно подробно расписано

оф. дока - https://docs.aiogram.dev/en/latest/

handler.py

from aiogram import Router, F


router = Router()


@router.callback_query(F.data == 'first')
async def first(callback: CallbackQuery) -> None:
    print(callback)

main.py

import asyncio
from handler import router
from aiogram import Bot, Dispatcher


async def main():
    bot = Bot(token="BOT_TOKEN")
    dp = Dispatcher()
    dp.include_routers(router)
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot, dispatcher=dp)


if __name__ == "__main__":
    asyncio.run(main())
→ Ссылка