"""Менеджер для работы с администраторами admin-bot.""" import json import logging from pathlib import Path from typing import List, Set logger = logging.getLogger(__name__) class AdminManager: """Управление списком администраторов.""" def __init__(self, admins_file: Path): """ Args: admins_file: Путь к JSON файлу со списком администраторов """ self.admins_file = admins_file self.admins_file.parent.mkdir(parents=True, exist_ok=True) self._admins: Set[int] = set() self._load() def _load(self): """Загрузить список администраторов из файла.""" try: if self.admins_file.exists(): with open(self.admins_file, 'r', encoding='utf-8') as f: data = json.load(f) self._admins = set(data.get('admins', [])) logger.info(f"Loaded {len(self._admins)} admins from {self.admins_file}") else: logger.info("Admins file not found, starting with empty list") except Exception as e: logger.error(f"Error loading admins: {e}", exc_info=True) self._admins = set() def _save(self): """Сохранить список администраторов в файл.""" try: with open(self.admins_file, 'w', encoding='utf-8') as f: json.dump({'admins': list(self._admins)}, f, indent=2) logger.debug(f"Saved {len(self._admins)} admins to {self.admins_file}") except Exception as e: logger.error(f"Error saving admins: {e}", exc_info=True) def add_admin(self, user_id: int): """Добавить администратора.""" if user_id not in self._admins: self._admins.add(user_id) self._save() logger.info(f"Added admin: {user_id}") else: logger.debug(f"Admin {user_id} already exists") def is_admin(self, user_id: int) -> bool: """Проверить, является ли пользователь администратором.""" return user_id in self._admins def get_all_admins(self) -> List[int]: """Получить список всех администраторов.""" return list(self._admins)