From b009d60043c1d52db00359fa8160e6aadc8b685d Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Sat, 20 Dec 2025 10:11:21 -0600 Subject: [PATCH] =?UTF-8?q?feat:=20Implementar=20flujo=20de=20conversaci?= =?UTF-8?q?=C3=B3n=20/horario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se ha implementado un nuevo flujo de conversación para que los usuarios puedan definir su horario de trabajo a través del comando . Cambios: 1. **Nuevo **: Se ha añadido un nuevo archivo JSON que define las preguntas y los estados de la conversación para la definición de horarios. 2. **Actualización de **: Se ha añadido el comando a la lista de comandos del bot para que sea visible en el menú de Telegram. El existente carga dinámicamente este nuevo flujo, haciéndolo disponible para los usuarios sin necesidad de cambios adicionales en la lógica principal del bot. --- conv-flows/horario.json | 115 ++++++++++++++++++++++++++++++++++++++++ main.py | 1 + 2 files changed, 116 insertions(+) create mode 100644 conv-flows/horario.json diff --git a/conv-flows/horario.json b/conv-flows/horario.json new file mode 100644 index 0000000..1361616 --- /dev/null +++ b/conv-flows/horario.json @@ -0,0 +1,115 @@ +{ + "flow_name": "horario", + "steps": [ + { + "state": 0, + "variable": "INTRO_READ", + "type": "keyboard", + "question": "ANTES DE DEFINIR TUS HORARIOS\n\nLee con atención:\n\n• Estos horarios se usarán para control de asistencia y reportes\n• Selecciona únicamente los botones disponibles\n• El sistema convertirá automáticamente a formato 24 hrs\n\nCuando estés listo, continúa.", + "options": ["Continuar"], + "next_step": 1 + }, + { + "state": 1, + "variable": "SHORT_NAME", + "type": "text", + "question": "¿Cómo te dicen normalmente?", + "next_step": 2 + }, + { + "state": 2, + "variable": "MONDAY_IN", + "type": "keyboard", + "question": "Lunes · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 3 + }, + { + "state": 3, + "variable": "MONDAY_OUT", + "type": "keyboard", + "question": "Lunes · Hora de salida", + "options": ["4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM"], + "next_step": 4 + }, + { + "state": 4, + "variable": "TUESDAY_IN", + "type": "keyboard", + "question": "Martes · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 5 + }, + { + "state": 5, + "variable": "TUESDAY_OUT", + "type": "keyboard", + "question": "Martes · Hora de salida", + "options": ["4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM"], + "next_step": 6 + }, + { + "state": 6, + "variable": "WEDNESDAY_IN", + "type": "keyboard", + "question": "Miércoles · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 7 + }, + { + "state": 7, + "variable": "WEDNESDAY_OUT", + "type": "keyboard", + "question": "Miércoles · Hora de salida", + "options": ["4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM"], + "next_step": 8 + }, + { + "state": 8, + "variable": "THURSDAY_IN", + "type": "keyboard", + "question": "Jueves · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 9 + }, + { + "state": 9, + "variable": "THURSDAY_OUT", + "type": "keyboard", + "question": "Jueves · Hora de salida", + "options": ["4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM"], + "next_step": 10 + }, + { + "state": 10, + "variable": "FRIDAY_IN", + "type": "keyboard", + "question": "Viernes · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 11 + }, + { + "state": 11, + "variable": "FRIDAY_OUT", + "type": "keyboard", + "question": "Viernes · Hora de salida", + "options": ["4:00 PM","5:00 PM","6:00 PM","7:00 PM","8:00 PM"], + "next_step": 12 + }, + { + "state": 12, + "variable": "SATURDAY_IN", + "type": "keyboard", + "question": "Sábado · Hora de entrada", + "options": ["10:00 AM","11:00 AM","12:00 PM","1:00 PM","2:00 PM","3:00 PM"], + "next_step": 13 + }, + { + "state": 13, + "variable": "SATURDAY_OUT", + "type": "info", + "question": "Sábado · Hora de salida\n\nLa salida del sábado queda registrada automáticamente a las 6:00 PM.", + "next_step": -1 + } + ] +} \ No newline at end of file diff --git a/main.py b/main.py index 54dc1bd..52a3a09 100644 --- a/main.py +++ b/main.py @@ -89,6 +89,7 @@ async def post_init(application: Application): await application.bot.set_my_commands([ BotCommand("start", "Mostrar menú principal"), # BotCommand("welcome", "Registro de nuevas empleadas"), # Se maneja dinámicamente + BotCommand("horario", "Definir horario de trabajo"), BotCommand("vacaciones", "Solicitar vacaciones"), BotCommand("permiso", "Solicitar permiso por horas"), BotCommand("links", "Links útiles"),