feat: ask about previous mobile email access before showing instructions
This commit is contained in:
+48
-47
@@ -1,47 +1,48 @@
|
||||
# /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"
|
||||
|
||||
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]
|
||||
# /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]
|
||||
|
||||
Reference in New Issue
Block a user