72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
# BotLibrary/configs/list_ids.py
|
||
# Получение id пользователей из базы данных
|
||
|
||
import os
|
||
import json
|
||
from loguru import logger
|
||
|
||
from .config import *
|
||
from .important_path import ProjectPath
|
||
|
||
# Настройка экспорта модулей и логирования
|
||
__all__ = ("load_ids_from_json", "save_ids_to_json", "DataID")
|
||
default_file = ProjectPath.list_id
|
||
log_type = "ListID"
|
||
|
||
|
||
# Чтение данных из файла JSON с обработкой ошибок
|
||
def load_ids_from_json(file=default_file, encoding=default_encod):
|
||
try:
|
||
# Проверка существования файла
|
||
if not os.path.exists(file):
|
||
# Если файл не существует, создаем его с пустым содержимым
|
||
with open(file, "w", encoding=encoding) as f:
|
||
json.dump({}, f, ensure_ascii=False, indent=4)
|
||
|
||
# Чтение данных из файла
|
||
with open(file, "r", encoding=encoding) as f:
|
||
return json.load(f)
|
||
|
||
except FileNotFoundError:
|
||
(logger.bind(log_type=log_type, user="Файл id")
|
||
.error(f"Файл {file} не найден!"))
|
||
return {}
|
||
|
||
except json.JSONDecodeError:
|
||
(logger.bind(log_type=log_type, user="Декодирование id")
|
||
.error(f"Ошибка декодирования JSON в файле {file}"))
|
||
return {}
|
||
|
||
except Exception as e:
|
||
(logger.bind(log_type=log_type, user="Чтение id")
|
||
.error(f"Произошла ошибка при чтении файла {file}: {e}"))
|
||
return {}
|
||
|
||
|
||
# Запись данных в файл JSON с обработкой ошибок
|
||
def save_ids_to_json(file=default_file, encoding=default_encod, data=None):
|
||
try:
|
||
with open(file, "w", encoding=encoding) as f:
|
||
json.dump(data, f, ensure_ascii=False, indent=4)
|
||
|
||
except Exception as e:
|
||
(logger.bind(log_type=log_type, user="Запись id")
|
||
.error(f"Произошла ошибка при записи в файл {file}: {e}"))
|
||
|
||
|
||
# Класс для хранения данных из JSON
|
||
class DataID:
|
||
# Получение информации из списка важных айди, забанненых айди и общих
|
||
data_list_id = load_ids_from_json(ProjectPath.list_id)
|
||
data_user_data = load_ids_from_json(ProjectPath.user_info_file)
|
||
|
||
# Список забанненых пользователей
|
||
ban_list = data_list_id.get("ban_list_ids", {})
|
||
|
||
# Список важных айди
|
||
admins = data_list_id.get("important_adm_ids", {})
|
||
groups = data_list_id.get("important_groups_ids", {})
|
||
users = data_list_id.get("important_users_list_ids", {})
|
||
channels = data_list_id.get("important_channel_ids", {})
|
||
important = {**groups, **admins, **users, **channels}
|