diff --git a/app/main.py b/app/main.py index a3ebd19..06a7c6e 100644 --- a/app/main.py +++ b/app/main.py @@ -18,7 +18,7 @@ from telegram.ext import Application, Defaults, CommandHandler, ContextTypes # --- IMPORTAR HABILIDADES --- from modules.flow_builder import load_flows from modules.logger import log_request -from modules.database import chat_id_exists # Importar chat_id_exists +from modules.database import chat_id_exists, deregister_user from modules.ui import main_actions_keyboard from modules.rh_requests import vacaciones_handler, permiso_handler @@ -105,6 +105,17 @@ async def menu_principal(update: Update, context: ContextTypes.DEFAULT_TYPE): ) +async def reset_command(update: Update, context: ContextTypes.DEFAULT_TYPE): + """Permite a un usuario eliminar su registro para reiniciar el flujo.""" + user = update.effective_user + log_request(user.id, user.username, "reset", update.message.text) + + deregister_user(user.id) + await update.message.reply_text("🔄 Tu registro ha sido eliminado. Ahora puedes volver a registrarte.") + # Llamar a menu_principal para mostrar el menú actualizado + await menu_principal(update, context) + + async def post_init(application: Application): # Mantén los comandos rápidos disponibles en el menú de Telegram await application.bot.set_my_commands( @@ -146,6 +157,7 @@ def main(): app.add_handler(CommandHandler("start", menu_principal)) app.add_handler(CommandHandler("help", menu_principal)) app.add_handler(CommandHandler("links", links_menu)) + app.add_handler(CommandHandler("reset", reset_command)) # Handlers de módulos app.add_handler(vacaciones_handler) diff --git a/app/modules/database.py b/app/modules/database.py index 248130d..01a2297 100644 --- a/app/modules/database.py +++ b/app/modules/database.py @@ -29,3 +29,14 @@ def register_user(user_data: dict) -> bool: except Exception as e: logging.error(f"[MockDB] Register error: {e}") return False + + +def deregister_user(chat_id: int) -> bool: + """Mock deregister: removes user from in-memory set.""" + try: + _REGISTERED_USERS.discard(int(chat_id)) + logging.info(f"[MockDB] User {chat_id} deregistered from memory.") + return True + except Exception as e: + logging.error(f"[MockDB] Deregister error: {e}") + return False