from typing import Any, Awaitable, Callable, Dict from aiogram import BaseMiddleware from aiogram.types import TelegramObject from aiogram.fsm.context import FSMContext from aiogram.utils.i18n import gettext as _ from ...bot.handlers.context import ContextData class ResetStateMiddleware(BaseMiddleware): async def __call__(self, handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]], event: TelegramObject, data: Dict[str, Any]) -> Any: save_state = False callback_data = data.get("callback_data") if isinstance(callback_data, ContextData): save_state = callback_data.save_state if not save_state: state = data.get("state") if isinstance(state, FSMContext): await state.clear() return await handler(event, data)