#!/usr/bin/env python3

import re
import os
import logging


class ConfigUpdater:
    def __init__(self):
        self.logger = logging.getLogger(__name__)
        self.keys_file = 'keys.py'
        
    def update_start_topic_id(self, new_topic_id):
        """Обновление start_topic_id в файле keys.py"""
        try:
            # Проверяем существование файла
            if not os.path.exists(self.keys_file):
                self.logger.error(f"Файл {self.keys_file} не найден")
                return False
                
            # Читаем содержимое файла
            with open(self.keys_file, 'r', encoding='utf-8') as f:
                content = f.read()
            
            # Ищем строку с start_topic_id и заменяем значение
            pattern = r'^(start_topic_id\s*=\s*)(.*)$'
            replacement = rf'\g<1>{new_topic_id}'
            
            new_content, count = re.subn(pattern, replacement, content, flags=re.MULTILINE)
            
            if count == 0:
                self.logger.error("Не найдена переменная start_topic_id в keys.py")
                return False
            
            # Записываем обновленное содержимое
            with open(self.keys_file, 'w', encoding='utf-8') as f:
                f.write(new_content)
            
            self.logger.info(f"Успешно обновлен start_topic_id на {new_topic_id} в {self.keys_file}")
            return True
            
        except Exception as e:
            self.logger.error(f"Ошибка при обновлении start_topic_id: {e}")
            return False
    
    def get_current_start_topic_id(self):
        """Получение текущего значения start_topic_id из keys.py"""
        try:
            if not os.path.exists(self.keys_file):
                self.logger.error(f"Файл {self.keys_file} не найден")
                return None
                
            with open(self.keys_file, 'r', encoding='utf-8') as f:
                content = f.read()
            
            # Ищем значение start_topic_id
            match = re.search(r'^start_topic_id\s*=\s*(.*)$', content, flags=re.MULTILINE)
            if match:
                value = match.group(1).strip()
                # Пытаемся преобразовать в число
                try:
                    return int(value) if value and value != 'None' else None
                except ValueError:
                    return None
            
            return None
            
        except Exception as e:
            self.logger.error(f"Ошибка при чтении start_topic_id: {e}")
            return None