Origin #2

Merged
Whyverum merged 35 commits from origin into master 2024-12-23 18:17:17 +03:00
Showing only changes of commit 38040368ed - Show all commits

View File

@@ -1,10 +1,13 @@
# BotLibrary/analitics/user_data_to_file.py # BotLibrary/analitics/user_data_to_file.py
# Запись информации о пользователях в файл "user_data.db" (Сделать счетчик пользователей) # Запись информации о пользователи в базу данных
import os import os
import json import json
import datetime import datetime
from config import ImportantPath, BotVariables
from aiogram.types import User, Birthdate
from configs import *
from ..library.time import TimeVariable
# Настройка экспорта модулей и логирования # Настройка экспорта модулей и логирования
__all__ = ("write_user_info_to_file", "format_user_record",) __all__ = ("write_user_info_to_file", "format_user_record",)
@@ -12,13 +15,13 @@ log_type = "User_data_file"
# Функция записи информации в JSON-файл # Функция записи информации в JSON-файл
def write_user_info_to_file(user): def write_user_info_to_file(user: User):
directory = os.path.dirname(ImportantPath.user_info_file) directory = os.path.dirname(ProjectPath.user_info_file)
if not os.path.exists(directory): if not os.path.exists(directory):
os.makedirs(directory) os.makedirs(directory)
if os.path.exists(ImportantPath.user_info_file): if os.path.exists(ProjectPath.user_info_file):
with open(ImportantPath.user_info_file, "r", encoding=BotVariables.encoding) as file: with open(ProjectPath.user_info_file, "r", encoding=default_encod) as file:
try: try:
user_data = json.load(file) user_data = json.load(file)
except json.JSONDecodeError: except json.JSONDecodeError:
@@ -29,19 +32,24 @@ def write_user_info_to_file(user):
user_record = format_user_record(user) user_record = format_user_record(user)
user_data[str(user.id)] = user_record user_data[str(user.id)] = user_record
with open(ImportantPath.user_info_file, "w", encoding=BotVariables.encoding) as file: with open(ProjectPath.user_info_file, "w", encoding=default_encod) as file:
json.dump(user_data, file, ensure_ascii=False, indent=4) json.dump(user_data, file, ensure_ascii=False, indent=4)
return f"Информация о пользователе успешно записана или обновлена."
# Функция форматирования вывода в JSON-файл # Функция форматирования вывода в JSON-файл
def format_user_record(user): def format_user_record(user: User):
first_name = getattr(user, 'first_name', '') # Получаем имя first_name = getattr(user, 'first_name', '') # Получаем имя
last_name = getattr(user, 'last_name', '') # Получаем фамилию или пустую строку last_name = getattr(user, 'last_name', '') # Получаем фамилию или пустую строку
# Получение даты рождения
birthdate = getattr(user, 'birthdate', None)
if isinstance(birthdate, Birthdate):
birthdate_str = f"{birthdate.day:02d}.{birthdate.month:02d}.{birthdate.year or 'Не указано'}"
else:
birthdate_str = "Не указано"
return { return {
"Время знакомства": datetime.datetime.now().strftime(BotVariables.time_format), "Время знакомства": datetime.datetime.now().strftime(TimeVariable.format),
"Имя": first_name, "Имя": first_name,
"Фамилия": last_name, "Фамилия": last_name,
"Юзернейм": f"@{getattr(user, 'username', 'Не указано')}", "Юзернейм": f"@{getattr(user, 'username', 'Не указано')}",
@@ -50,5 +58,5 @@ def format_user_record(user):
"Бот": getattr(user, 'is_bot', False), "Бот": getattr(user, 'is_bot', False),
"Премиум": getattr(user, 'is_premium', False), "Премиум": getattr(user, 'is_premium', False),
"Язык": getattr(user, 'language_code', 'Не указано'), "Язык": getattr(user, 'language_code', 'Не указано'),
"Дата рождения": birthdate_str, # Добавляем дату рождения
} }