2.0 Да я ебал это все рассписывать но тут типо новая система логгирования

This commit is contained in:
Verum
2025-03-12 06:44:14 +07:00
parent 0704b2600f
commit 142753dc81
48 changed files with 634 additions and 239 deletions

View File

@@ -1,24 +1,25 @@
# BotLibrary/validators/email_validators.py
# Создание валидации почты для проекта
from email_validator import validate_email, EmailNotValidError
from typing import Optional
from email_validator import validate_email, EmailNotValidError
# Настройка экспорта из этого модуля
__all__ = ("valid_email",)
# Функция проверки почты на корректность
def valid_email(text: str) -> Optional[str]:
"""
Проверяет корректность почтового адреса.
:param text: Почтовый адрес в виде строки.
# Функция проверки почты на корректность
def valid_email(email: str) -> Optional[str]:
"""
Делает почтовый адрес корректным.
:param email: Почтовый адрес в виде строки.
:return: Нормализованный почтовый адрес, если он валиден, иначе None.
"""
try:
# Проверка и нормализация email
email = validate_email(text)
return email.normalized
except EmailNotValidError:
# Если email невалиден, можно добавить логирование или обработку ошибок
return None
return validate_email(email).normalized
except EmailNotValidError as e:
# Импортируем Logs внутри функции, чтобы избежать циклического импорта
from ..loggers.custom_loggers import Logs
Logs.error(text=f"Ошибка в нормализировании почты: {e}", log_type="NormalEmail")
return None

View File

@@ -1,5 +1,20 @@
# BotLibrary/validators/normal_word.py
# Нормализирует вид слова автоматически
async def normal_words(word : str = "Тестовое слово") -> str:
return word.lower().capitalize()
# Настройка экспорта из этого модуля
__all__ = ("normal_words",)
async def normal_words(word: str) -> str:
"""
Делает слово корректного вида.
:param word: Слово, которое будет приводиться к виду (Тесты).
:return: Нормализованное слово
"""
try:
return word.lower().capitalize()
except Exception as e:
# Импортируем Logs внутри функции, чтобы избежать циклического импорта
from ..loggers.custom_loggers import Logs
Logs.error(text=f"Ошибка в нормализировании слова: {e}", log_type="NormalWord")
return word

View File

@@ -25,5 +25,27 @@ def valid_url(url: str) -> bool:
# Функция, что дает тексту ссылку на HTML
def url_to_text(text: str = "Тест", url: str = "www.google.com") -> str:
return f'<b><a href="{url}">{text}</a></b>'
def url_to_text(text: str, url: str) -> str:
"""
Преобразует текст в HTML ссылку с указанным URL.
Эта функция генерирует HTML-ссылку с переданным текстом и URL, используя тег `<а>`, и делает ссылку жирной.
:param text: Текст, который будет отображаться для ссылки.
:param url: URL, который будет привязан к тексту.
:return: Строка с HTML кодом для ссылки, если URL валиден.
:raises ValueError: Если URL невалиден.
"""
try:
if not valid_url(url): # Проверяем, является ли URL валидным
raise ValueError(f"Переданный URL '{url}' невалиден.")
# Генерация HTML-ссылки
return f'<b><a href="{url}">{text}</a></b>'
except ValueError as e:
# Импортируем Logs внутри функции, чтобы избежать циклического импорта
from ..loggers.custom_loggers import Logs
# Логируем ошибку с использованием Logs.error, как указано
Logs.error(text=f"Ошибка при создании ссылки: {e}", log_type="InvalidURL")
raise e # Перебрасываем ошибку выше для дальнейшей обработки или уведомления

View File

@@ -6,6 +6,7 @@ from aiogram.types import Message
# Настройка экспорта из модуля
__all__ = ("username", "username_to_text")
# Функция получения юзера или ID пользователя
def username(message: Message) -> str:
"""
@@ -13,12 +14,32 @@ def username(message: Message) -> str:
:param message: Объект сообщения из aiogram.
:return: Строка с юзернеймом пользователя или его ID.
:raises ValueError: Если в сообщении отсутствует информация о пользователе.
"""
if message.from_user:
return f"@{message.from_user.username}" if message.from_user.username else f"@{message.from_user.id}"
return "@Unknown_User" # Если from_user отсутствует
try:
if message.from_user:
return f"@{message.from_user.username}" if message.from_user.username else f"@{message.from_user.id}"
raise ValueError("Информация о пользователе отсутствует в сообщении.")
except ValueError as e:
# Логируем ошибку с использованием Logs.error
raise e # Перебрасываем ошибку выше для дальнейшей обработки
# Функция получение имени пользователя + ссылка на него
def username_to_text(message: Message) -> str:
return f'<b><a href="tg://user?id={message.from_user.id}">{message.from_user.full_name}</a></b>'
"""
Преобразует информацию о пользователе в строку с HTML-ссылкой.
:param message: Объект сообщения из aiogram.
:return: Строка с HTML-кодом для ссылки на пользователя.
:raises ValueError: Если в сообщении отсутствует информация о пользователе.
"""
try:
if message.from_user:
return f'<b><a href="tg://user?id={message.from_user.id}">{message.from_user.full_name}</a></b>'
raise ValueError("Информация о пользователе отсутствует в сообщении.")
except ValueError as e:
# Логируем ошибку с использованием Logs.error
raise e # Перебрасываем ошибку выше для дальнейшей обработки