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: Конфигурация пользователя, если она найдена.