from typing import Any, Awaitable, Callable, Dict, Optional
from aiogram import BaseMiddleware
from aiogram.types import TelegramObject, CallbackQuery
from bot.keyboards.inline import select_language
from config import AVAILABLE_LANGUAGES_WORDS
class FirstTimeMiddleware(BaseMiddleware):
async def __call__(
self,
handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
event: TelegramObject,
data: Dict[str, Any],
) -> Any:
user = data['user']
if user.language:
return await handler(event, data)
if getattr(event, 'callback_query', None):
if event.callback_query.data.startswith('select_language_'):
return await handler(event, data)
return await event.message.answer(text='Select the interface language.',
reply_markup=select_language(AVAILABLE_LANGUAGES_WORDS))