revert: Disable file-based persistence for user registration

This reverts the changes that introduced file-based persistence for user registration.

The user has requested that the bot should not persist user registrations to allow for repeated testing of the registration flow. This commit restores the original in-memory registration behavior, where the list of registered users is cleared on every restart.

This change facilitates testing by allowing the same user to go through the registration process multiple times without being remembered by the bot.
This commit is contained in:
google-labs-jules[bot]
2025-12-23 14:57:57 +00:00
parent cfe6d96113
commit c824a29cfa
2 changed files with 6 additions and 61 deletions

View File

@@ -18,10 +18,7 @@ from telegram.ext import Application, Defaults, CommandHandler, ContextTypes
# --- IMPORTAR HABILIDADES --- # --- IMPORTAR HABILIDADES ---
from modules.flow_builder import load_flows from modules.flow_builder import load_flows
from modules.logger import log_request from modules.logger import log_request
from modules.database import ( from modules.database import chat_id_exists # Importar chat_id_exists
chat_id_exists,
load_registered_users,
) # Importar chat_id_exists y load_registered_users
from modules.ui import main_actions_keyboard from modules.ui import main_actions_keyboard
from modules.rh_requests import vacaciones_handler, permiso_handler from modules.rh_requests import vacaciones_handler, permiso_handler
@@ -109,11 +106,6 @@ async def menu_principal(update: Update, context: ContextTypes.DEFAULT_TYPE):
async def post_init(application: Application): async def post_init(application: Application):
"""Tareas a ejecutar después de que el bot se haya inicializado."""
# Cargar usuarios registrados desde el archivo de persistencia.
# Es crucial que esto se ejecute antes de que el bot empiece a recibir updates.
load_registered_users()
# Mantén los comandos rápidos disponibles en el menú de Telegram # Mantén los comandos rápidos disponibles en el menú de Telegram
await application.bot.set_my_commands( await application.bot.set_my_commands(
[ [

View File

@@ -1,15 +1,4 @@
import logging import logging
import os
# --- CONFIGURACIÓN DE PERSISTENCIA ---
# Usamos un archivo de texto para persistir los chat_id de usuarios registrados.
# Esto es una solución temporal y ligera hasta que se implemente una base de datos.
DATA_DIR = os.path.join(os.path.dirname(__file__), "..", "..", "data")
USERS_FILE = os.path.join(DATA_DIR, "registered_users.txt")
# Asegurarse de que el directorio de datos exista
os.makedirs(DATA_DIR, exist_ok=True)
# MOCK DATABASE MODULE # MOCK DATABASE MODULE
# Since the actual DB is removed temporarily, this module provides mock implementations. # Since the actual DB is removed temporarily, this module provides mock implementations.
@@ -20,59 +9,23 @@ SessionVanityAttendance = None
_REGISTERED_USERS = set() _REGISTERED_USERS = set()
def load_registered_users():
"""Carga los chat_id de usuarios registrados desde el archivo de texto."""
try:
if os.path.exists(USERS_FILE):
with open(USERS_FILE, "r") as f:
for line in f:
try:
_REGISTERED_USERS.add(int(line.strip()))
except ValueError:
logging.warning(
f"[DB] Se ignoró una línea no válida en {USERS_FILE}: {line.strip()}"
)
logging.info(
f"[DB] Se cargaron {len(_REGISTERED_USERS)} usuarios registrados desde {USERS_FILE}"
)
else:
logging.info(f"[DB] No se encontró el archivo de usuarios en {USERS_FILE}, se creará uno nuevo al primer registro.")
except Exception as e:
logging.error(f"[DB] Error al cargar usuarios registrados: {e}")
def chat_id_exists(chat_id: int) -> bool: def chat_id_exists(chat_id: int) -> bool:
"""Mock check: returns True if user is in in-memory set.""" """Mock check: returns True if user is in in-memory set."""
return int(chat_id) in _REGISTERED_USERS return int(chat_id) in _REGISTERED_USERS
def register_user(user_data: dict) -> bool: def register_user(user_data: dict) -> bool:
""" """Mock register: adds user to in-memory set."""
Mock register: adds user to in-memory set and appends to the persistence file.
"""
try: try:
meta = user_data.get("meta", {}) meta = user_data.get("meta", {})
metadata = user_data.get("metadata", {}) metadata = user_data.get("metadata", {})
tid = meta.get("telegram_id") or metadata.get("telegram_id") or metadata.get("chat_id") tid = meta.get("telegram_id") or metadata.get("telegram_id") or metadata.get("chat_id")
if tid: if tid:
chat_id = int(tid) _REGISTERED_USERS.add(int(tid))
if chat_id not in _REGISTERED_USERS: logging.info(f"[MockDB] User {tid} registered in memory.")
_REGISTERED_USERS.add(chat_id)
# Persistir en el archivo de texto
with open(USERS_FILE, "a") as f:
f.write(f"{chat_id}\n")
logging.info(f"[DB] User {chat_id} registered in memory and persisted to file.")
else:
logging.info(f"[DB] User {chat_id} was already registered.")
return True return True
logging.warning("[MockDB] Could not find telegram_id in user_data.")
logging.warning("[DB] Could not find telegram_id in user_data to register.")
return False
except (ValueError, TypeError) as e:
logging.error(f"[DB] Invalid telegram_id format: {tid}. Error: {e}")
return False return False
except Exception as e: except Exception as e:
logging.error(f"[DB] Register error: {e}") logging.error(f"[MockDB] Register error: {e}")
return False return False