# app/bot/user_state_manager.py
from app.bot.constants import UserStates
from telebot import logger
class UserStateManager:
    def __init__(self):
        self.user_states = {}

    def set_state(self, chat_id: int, state: UserStates):
        """Устанавливает состояние для пользователя."""
        if not isinstance(state, UserStates):
            raise ValueError("state должен быть экземпляром UserStates Enum")
        self.user_states[chat_id] = state
        logger.debug(f"[StateManager] ✅ Установлено состояние для {chat_id}: {state.name}")

    def get_state(self, chat_id: int) -> UserStates:
        """Получает текущее состояние пользователя. По умолчанию - MAIN_MENU."""
        state = self.user_states.get(chat_id, UserStates.MAIN_MENU)
        logger.debug(f"[StateManager] 📌 Текущее состояние для {chat_id}: {state.name}")
        return state

    def reset_state(self, chat_id: int):
        """Сбрасывает состояние пользователя в главное меню."""
        self.user_states[chat_id] = UserStates.MAIN_MENU
        logger.debug(f"[StateManager] 🔄 Сброс состояния для {chat_id}. Назначено: MAIN_MENU")
