Files
PrimoPearlBot/BotLibrary/configs/list_ids.py

72 lines
2.8 KiB
Python
Raw Permalink 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/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 = {**admins, **groups, **users, **channels}