es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Acción de voz dentro de un if / elif de Python-3.x

Estoy empezando con Python. Estoy desarrollando una aplicación similar a Alexa, Jarvis, Cortana, entre otros, que automatiza acciones a través de la voz.

Versión de Python: Python 3.10.0

Estoy utilizando estas bibliotecas:

import speech_recognition as sr
import pyttsx3
import pywhatkit
import urllib.request
import json
import datetime
import wikipedia

Mi problema es que cuando le digo al “BOT” o aplicación que envíe un mensaje a una persona “x”, no reconoce la acción que debe realizar, dejo aquí mi código:

elif 'enviar mensaje a ' in rec:
    if 'padre' in rec == True:
        msj = rec.replace('enviar mensaje a padre', '')
        talk('Enviando mensaje al padre...' + msj)
        print(dad, msj)
        pywhatkit.sendwhatmsg_instantly(dad, msj, 20)
    elif 'madre' in rec == True:
        msj = rec.replace('enviar mensaje a madre', '')
        talk('Enviando mensaje a la madre...' + msj)
        print(mom, msj)
        pywhatkit.sendwhatmsg_instantly(mom, msj, 20)

Las variables “madre” y “padre” tienen asignado un número cada una. La acción “pywhatkit.sendwhatmsg_instantly” envía automáticamente un mensaje por WhatsApp. La acción “msg = rec.replace(‘enviar mensaje a xx’, ”)” reemplaza el texto inicial en este caso “enviar mensaje a madre” con un mensaje vacío para que el bot no repita eso. Sólo envía lo que se ha dicho después de la variable “msg”, por ejemplo: “Enviar mensaje a mamá” -> “Hola mamá” <- esto es lo que envía el bot.

Si el problema es que no me reconoce cuando digo “Bot envía mensaje a xx o xx”.

Agradezco cualquier ayuda.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Python, sugiero la siguiente solución para su problema:

    En su código actual, está verificando la presencia de la cadena “”send message to ‘” en la variable rec. Sin embargo, también está verificando si la cadena “”dad”” o “”mom”” están presentes en rec. Esta condición siempre se evaluará como verdadera siempre y cuando “”send message to ‘”” esté presente en rec, independientemente de si “”dad”” o “”mom”” están presentes.

    Para solucionar esto, puede primero verificar si “”send message to dad”” o “”send message to mom”” están presentes en rec y luego reemplazar la cadena correspondiente con un mensaje vacío usando el método replace. Aquí hay un ejemplo:

    elif 'send message to dad' in rec:
        msj = rec.replace('send message to dad', '')
        talk('Sending message to dad...' + msj)
        print(dad, msj)
        pywhatkit.sendwhatmsg_instantly(dad, msj, 20)
    elif 'send message to mom' in rec:
        msj = rec.replace('send message to mom', '')
        talk('Sending message to mom...' + msj)
        print(mom, msj)
        pywhatkit.sendwhatmsg_instantly(mom, msj, 20)
    

    De esta manera, el código primero verificará la presencia de las cadenas “”send message to dad”” o “”send message to mom”” en rec y luego reemplazará la cadena correspondiente con un mensaje vacío para enviar el mensaje usando pywhatkit.

    Espero que esto ayude a resolver su problema. ¡Buena suerte con su proyecto de Python!

Comments are closed.