Как объявить переменную внутри функции aiogram 3

Помогите исправить код. У меня есть бот для открытия карт, где пользователь сначала выбирает колоду и в зависимости от его выбора и извлекается нужный файл JSON откуда и будут браться в дальнейшем данные. В целом код для определения колоды и файла работает, проблема в том что в функции async def send_card(message: Message): не знаю как объявиться переменную deck_file. Значение deck_file должно соответствовать файлу колоды, которую пользовать уже выбрал ранее. Если после строки reply_markup=kb.cardshouse) прописать await send_card(callback.message, deck_file) то значение переменной извлекается верно и сразу после выбора колоды отправляется карта пользователю, но так не должно работать. Карта должна быть отправлена в другой момент и строго после употребления await send_card(callback.message) поэтому я хочу объявить переменную внутри функции, но не знаю как.

import json
import random
from aiogram import F, Router
from aiogram.types import Message, CallbackQuery
from aiogram.filters import Command
import app.keyboards as kb

card_router = Router()

deck_files = {
    "colodago1": "cards1.json",
    "colodago2": "cards2.json",
    "colodago3": "cards3.json",
}


@card_router.message(Command("coloda"))
async def show_deck_selection(message: Message):
    await message.answer(
        "Выбирай колоду",
        reply_markup=kb.coloda,
    )

@card_router.callback_query(F.data.in_(deck_files.keys()))
async def handle_deck_selection(callback: CallbackQuery):
    await callback.answer("")
    selected_deck = callback.data
    deck_file = deck_files[selected_deck]

    await callback.message.edit_text(
        f"Хорошо, ты выбрал колоду {selected_deck}. Открывай карту",
        reply_markup=kb.cardshouse)
"""     await send_card(callback.message, deck_file) """

@card_router.callback_query(F.data == "opencard")
async def open_card(callback: CallbackQuery):
    await callback.answer("")
    await send_card(callback.message)

@card_router.message(F.text == "Карта")
async def send_card(message: Message):
    with open(deck_file, "r", encoding="utf-8") as file:
        data = json.load(file)

        random_card_key = random.choice(list(data.keys()))
        card = data[random_card_key]

        url_picture = card["URL_picture"]
        name = card["name"]
        description = card["Description"]

        card_url = f"{url_picture}"
        card_message = f"\n{name}\n{description}"

        await message.answer_photo(
                card_url, card_message, reply_markup=kb.cardsview
            )

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

Автор решения: Сергей

Здесь вам может помочь машина состояний FSMContext. Есть хороший тутор на эту тему. https://mastergroosha.github.io/aiogram-3-guide/fsm/

→ Ссылка