~cytrogen/evi-run

ref: b4084f5eac89c4d164c014e297cff02678b07125 evi-run/bot/middlewares/first_time.py -rw-r--r-- 942 bytes
b4084f5e — Bendy Merge branch 'main' of https://github.com/pipedude/evi-run 5 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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))