All checks were successful
Build and Push Docker Images / build (push) Successful in 1m28s
- Рефакторинг Telegram бота на модульную структуру для удобства поддержки и расширения - Создан общий RabbitMQ клиент для Flask и Telegram компонентов - Подготовлена базовая архитектура для будущего масштабирования и новых функций Signed-off-by: UdoChudo <stream@udochudo.ru>
25 lines
1.3 KiB
Python
25 lines
1.3 KiB
Python
# 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")
|