Files
trueconf_bot/utils/states.py
2026-07-30 17:21:32 +07:00

49 lines
2.0 KiB
Python

# /opt/trueconf_bot/utils/states.py
import time
import config.config as config
user_states = {}
tc_bot = None # Общая переменная для экземпляра бота
# --- Константы состояний ---
PHOTO_MODE = "PHOTO_MODE"
SD_MODE = "SD_MODE"
TRANSCRIPTION_MODE = "TRANSCRIPTION_MODE"
SEARCH_MODE = "SEARCH_MODE"
INSTRUCT_EMAIL_HISTORY = "INSTRUCT_EMAIL_HISTORY"
def set_state(user_id, state):
"""Фиксирует новое состояние пользователя и обновляет метку времени активности"""
user_states[user_id] = {
"state": state,
"last_active": time.time()
}
def get_state(user_id):
"""
Возвращает текущее состояние пользователя.
Если время неактивности превысило лимит из config.py, сессия сбрасывается.
"""
if user_id in user_states:
session = user_states[user_id]
# Динамически забираем значение таймаута из конфига (дефолт — 1800 сек / 30 мин)
session_timeout = getattr(config, 'SESSION_TIMEOUT', 1800)
# Проверяем, сколько секунд прошло с момента последнего сообщения
if time.time() - session["last_active"] > session_timeout:
# Время вышло! Аппаратно сносим сессию навигации
del user_states[user_id]
return None
# Если время не вышло, обновляем таймер (пользователь проявил активность)
session["last_active"] = time.time()
return session["state"]
return None
def clear_state(user_id):
"""Принудительно очищает состояние пользователя (выход в корень)"""
if user_id in user_states:
del user_states[user_id]