Files
PrimoPearlBot/BotLibrary/analitics/user_data_to_file.py

55 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BotLibrary/analitics/user_data_to_file.py
# Запись информации о пользователях в файл "user_data.db" (Сделать счетчик пользователей)
import os
import json
import datetime
from config import ImportantPath, BotVariables
# Настройка экспорта модулей и логирования
__all__ = ("write_user_info_to_file", "format_user_record",)
log_type = "User_data_file"
# Функция записи информации в JSON-файл
def write_user_info_to_file(user):
directory = os.path.dirname(ImportantPath.user_info_file)
if not os.path.exists(directory):
os.makedirs(directory)
if os.path.exists(ImportantPath.user_info_file):
with open(ImportantPath.user_info_file, "r", encoding=BotVariables.encoding) as file:
try:
user_data = json.load(file)
except json.JSONDecodeError:
user_data = {}
else:
user_data = {}
user_record = format_user_record(user)
user_data[str(user.id)] = user_record
with open(ImportantPath.user_info_file, "w", encoding=BotVariables.encoding) as file:
json.dump(user_data, file, ensure_ascii=False, indent=4)
return f"Информация о пользователе успешно записана или обновлена."
# Функция форматирования вывода в JSON-файл
def format_user_record(user):
first_name = getattr(user, 'first_name', '') # Получаем имя
last_name = getattr(user, 'last_name', '') # Получаем фамилию или пустую строку
return {
"Время знакомства": datetime.datetime.now().strftime(BotVariables.time_format),
"Имя": first_name,
"Фамилия": last_name,
"Юзернейм": f"@{getattr(user, 'username', 'Не указано')}",
"Айди": user.id,
"Ссылка": f"tg://user?id={user.id}",
"Бот": getattr(user, 'is_bot', False),
"Премиум": getattr(user, 'is_premium', False),
"Язык": getattr(user, 'language_code', 'Не указано'),
}