def on_command_start(message): bot.send_chat_action(message.chat.id, 'typing') print(message.from_user) bot.send_message(message.chat.id, GestorConversacion.get_welcome_message( config.ASISTENTE_VIRTUAL, config.COMPANIA_SIGNOS), parse_mode="Markdown") #Mensaje de bienvenida donde valida si el usuario usa el bot y el tipo de perfil (Paciente o médico) bot.send_message(message.chat.id, GestorConversacion.get_validacion_paciente( message.from_user.id, message.from_user.first_name, config.COMPANIA_SIGNOS), parse_mode="Markdown")
def on_fallback(message): bot.send_chat_action(message.chat.id, 'typing') sleep(1) response = GestorConversacion.get_fallback_message( message.text, message.from_user.first_name, config.COMPANIA_SIGNOS) bot.reply_to(message, response, parse_mode="Markdown")
def on_set_signos(message): bot.send_chat_action(message.chat.id, 'typing') parts = re.match( r"^(registrar signos|rs) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*[.]?[0-9]*) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))$", message.text, flags=re.IGNORECASE) pas = int(parts[2]) pad = int(parts[3]) fc = int(parts[4]) peso = float(parts[5]) fecha_toma = parts[6] id_usuario = message.from_user.id #Pasa todas las validaciones pruebas if check_user(message, id_usuario): bot.send_message( message.chat.id, GestorConversacion.get_registro_signos( message.chat.first_name + " " + message.chat.last_name, pas, pad, fc, peso, fecha_toma), parse_mode="Markdown") bot.register_next_step_handler(message, GestorMediciones.step_2_registro_signos, pas, pad, fc, peso, fecha_toma)
def on_delete_signos(message): #se particiona el mensaje parts = re.match(r"^(eliminar signos|es) ([0-9]+)$", message.text, flags=re.IGNORECASE) #se guarda el id del usuario y id de la medicion id_usuario = int(message.from_user.id) id_medicion = int(parts[2]) #Se llama la funcion que consulta en la base de datos las mediciones. signo_borrar = GestorConsultas.consulta_signos(id_usuario, id_medicion) if check_user(message, id_usuario): #si no tiene signos if not signo_borrar: return bot.reply_to( message, f"\U0001F928 *{message.from_user.first_name}*, " f"No has regitrado signos con el id: {id_medicion}\n\n" "Verifica e intenta nuevamente, puedes usar el comando:\n\n" "*consultar signos|cs {Fecha inicial (dd-mm-aaaa)} {Fecha Final (dd-mm-aaaa)}* - para consultar sus signos registrados", parse_mode="Markdown") #si el signo ya tiene una observacion observacion = GestorConsultas.get_signo_observacion(id_medicion) if observacion: return bot.reply_to( message, f"\U0001F6AB No puedes eliminar esta medición porque tiene una observación: *\U0000203C {observacion.observacion} \U0000203C*", parse_mode="Markdown") #Mostar Signo a Eliminar y solicitar confimacion de eliminacion bot.send_message( message.chat.id, GestorConversacion.get_signo_eliminar( message.chat.first_name + " " + message.chat.last_name, signo_borrar.id, signo_borrar.pas, signo_borrar.pad, signo_borrar.fc, signo_borrar.peso, signo_borrar.fecha_toma, signo_borrar.fecha_registro), parse_mode="Markdown") #Recibir confirmacion de elminiacion y ejecutar la acción bot.register_next_step_handler(message, GestorMediciones.step_2_eliminar_signos, signo_borrar.id)
def on_set_observaciones(message): #se particiona el mensaje parts = re.match( r"^(ingresar observaciones|io) ([0-9]+) ([A-Za-z_ÑñÁáÉéÍíÓóÚú,;.:¡!¿?'´*%()0123456789 ]+)$", message.text, flags=re.IGNORECASE) #se guarda el id de la medicion id_medicion = int(parts[2]) observacion = str(parts[3]) id_usuario_medico = message.from_user.id #validar si es Medico if not GestorConsultas.validar_medico(id_usuario_medico): return bot.reply_to( message, f"\U0001F6AB Este comando solo puede ser utilizado por un * Médico *", parse_mode="Markdown") #Obtener la medicion que se le añadira la observacion medicion = GestorConsultas.consulta_medicion(id_medicion) #si no existe ninguna medicion con id_medicion if not medicion: return bot.reply_to( message, f"\U0001F928 No exite ninguna medición con el código: {id_medicion}\n\n" f"Verifica e intenta nuevamente, puedes usar el comando:\n\n" "*listar registros pacientes|lrp {documento paciente} {Fecha inicial (aaaa-mm-dd)} {Fecha Final (aaaa-mm-dd)}* - para consultar la medición de los pacientes", parse_mode="Markdown") #Mostar Observacion a añedir y solicitar confimacion de guardar bot.send_message(message.chat.id, GestorConversacion.get_observacion( id_medicion, observacion), parse_mode="Markdown") #Recibir confirmacion de elminiacion y ejecutar la acción bot.register_next_step_handler( message, GestorObservaciones.step_2_Registrar_observacion, id_medicion, id_usuario_medico, observacion)
def check_user(message, id_usuario): #Si el usuario no está registrado if not GestorConsultas.existencia_usuario(id_usuario): bot.reply_to( message, f"\U0001F614 *{message.from_user.first_name}*, no puedes implementar este comando, ya que no esta registrado.", parse_mode="Markdown") bot.send_message(message.chat.id, GestorConversacion.get_validacion_paciente( id_usuario, message.from_user.first_name, config.COMPANIA_SIGNOS), parse_mode="Markdown") return False #Si es un Medico if GestorConsultas.validar_medico(id_usuario): bot.reply_to( message, f"\U0001FA7A *Dr(a). {message.from_user.first_name}*, no puede implementar este comando, solo lo pueden usarlo pacientes.", parse_mode="Markdown") return False return True
def on_command_about(message): bot.send_chat_action(message.chat.id, 'typing') bot.send_message(message.chat.id, GestorConversacion.get_about(config.VERSION), parse_mode="Markdown")
def on_command_help(message): bot.send_chat_action(message.chat.id, 'typing') bot.send_message(message.chat.id, GestorConversacion.get_help(), parse_mode="Markdown")