Edit on GitHub

src.handlers.utils.usr_answers

 1import logging
 2from typing import Union
 3
 4from aiogram.types import CallbackQuery, Message
 5
 6import kb
 7import text
 8from core import exceptions as exc
 9from db import utils
10from db.models import UserActivity, UserData
11
12logger = logging.getLogger()
13
14
15async def find_user(trigger: Union[Message, CallbackQuery], configs=False):
16    """Ищет пользователя в базе данных и обрабатывает его статус.
17
18    Args:
19        trigger (Union[Message, CallbackQuery]): Сообщение или обратный вызов, содержащий информацию о пользователе.
20        configs (bool, optional): Флаг, указывающий, нужно ли извлекать конфигурации пользователя. По умолчанию False.
21
22    Returns:
23        UserData: Данные пользователя, если они найдены и активны.
24    """
25    try:
26        # Извлекаем данные пользователя из базы данных
27        if configs:
28            user_data: UserData = await utils.get_user_with_configs(
29                trigger.from_user.id
30            )
31        else:
32            user_data: UserData = await utils.get_user(trigger.from_user.id)
33
34        if user_data is None:
35            # Если данные пользователя не найдены, предлагаем регистрацию
36            await getattr(trigger, "message", trigger).answer(
37                "Отсутсвуют данные пользователя. Зарегистрируйтесь",
38                reply_markup=kb.static_reg_button,
39            )
40        elif user_data.active == UserActivity.freezed:
41            await trigger.answer("Аккаунт заморожен", show_alert=True)
42            return None
43        elif user_data.active == UserActivity.banned:
44            await trigger.answer("Аккаунт забанен", show_alert=True)
45            return None
46        elif user_data.active == UserActivity.deleted:
47            await trigger.answer("Аккаунт удален", show_alert=True)
48            return None
49    except exc.DatabaseError:
50        # Обрабатываем ошибки базы данных
51        await trigger.answer(text=text.DB_ERROR, show_alert=True)
52    else:
53        return user_data
54
55
56async def find_config(callback: CallbackQuery):
57    """Ищет конфигурацию пользователя в базе данных.
58
59    Args:
60        callback (CallbackQuery): Обратный вызов, содержащий информацию о пользователе и конфигурации.
61
62    Returns:
63        UserConfig: Конфигурация пользователя, если она найдена.
64    """
65    *_, cfg_id = callback.message.text.partition("| id: ")
66    try:
67        # Извлекаем конфигурацию пользователя из базы данных
68        user_config = await utils.get_wg_config(callback.from_user.id, cfg_id)
69
70        assert user_config
71    except exc.DatabaseError:
72        # Обрабатываем ошибки базы данных
73        await callback.answer(text=text.DB_ERROR, show_alert=True)
74    except AssertionError:
75        await callback.answer(text="Конфигурация не найдена", show_alert=True)
76    else:
77        return user_config
logger = <RootLogger root (DEBUG)>
async def find_user( trigger: Union[aiogram.types.message.Message, aiogram.types.callback_query.CallbackQuery], configs=False):
16async def find_user(trigger: Union[Message, CallbackQuery], configs=False):
17    """Ищет пользователя в базе данных и обрабатывает его статус.
18
19    Args:
20        trigger (Union[Message, CallbackQuery]): Сообщение или обратный вызов, содержащий информацию о пользователе.
21        configs (bool, optional): Флаг, указывающий, нужно ли извлекать конфигурации пользователя. По умолчанию False.
22
23    Returns:
24        UserData: Данные пользователя, если они найдены и активны.
25    """
26    try:
27        # Извлекаем данные пользователя из базы данных
28        if configs:
29            user_data: UserData = await utils.get_user_with_configs(
30                trigger.from_user.id
31            )
32        else:
33            user_data: UserData = await utils.get_user(trigger.from_user.id)
34
35        if user_data is None:
36            # Если данные пользователя не найдены, предлагаем регистрацию
37            await getattr(trigger, "message", trigger).answer(
38                "Отсутсвуют данные пользователя. Зарегистрируйтесь",
39                reply_markup=kb.static_reg_button,
40            )
41        elif user_data.active == UserActivity.freezed:
42            await trigger.answer("Аккаунт заморожен", show_alert=True)
43            return None
44        elif user_data.active == UserActivity.banned:
45            await trigger.answer("Аккаунт забанен", show_alert=True)
46            return None
47        elif user_data.active == UserActivity.deleted:
48            await trigger.answer("Аккаунт удален", show_alert=True)
49            return None
50    except exc.DatabaseError:
51        # Обрабатываем ошибки базы данных
52        await trigger.answer(text=text.DB_ERROR, show_alert=True)
53    else:
54        return user_data

Ищет пользователя в базе данных и обрабатывает его статус.

Arguments:
  • trigger (Union[Message, CallbackQuery]): Сообщение или обратный вызов, содержащий информацию о пользователе.
  • configs (bool, optional): Флаг, указывающий, нужно ли извлекать конфигурации пользователя. По умолчанию False.
Returns:

UserData: Данные пользователя, если они найдены и активны.

async def find_config(callback: aiogram.types.callback_query.CallbackQuery):
57async def find_config(callback: CallbackQuery):
58    """Ищет конфигурацию пользователя в базе данных.
59
60    Args:
61        callback (CallbackQuery): Обратный вызов, содержащий информацию о пользователе и конфигурации.
62
63    Returns:
64        UserConfig: Конфигурация пользователя, если она найдена.
65    """
66    *_, cfg_id = callback.message.text.partition("| id: ")
67    try:
68        # Извлекаем конфигурацию пользователя из базы данных
69        user_config = await utils.get_wg_config(callback.from_user.id, cfg_id)
70
71        assert user_config
72    except exc.DatabaseError:
73        # Обрабатываем ошибки базы данных
74        await callback.answer(text=text.DB_ERROR, show_alert=True)
75    except AssertionError:
76        await callback.answer(text="Конфигурация не найдена", show_alert=True)
77    else:
78        return user_config

Ищет конфигурацию пользователя в базе данных.

Arguments:
  • callback (CallbackQuery): Обратный вызов, содержащий информацию о пользователе и конфигурации.
Returns:

UserConfig: Конфигурация пользователя, если она найдена.