A veces es deseable poder automatizar mensajes de whatsapp para que se manden sin que requiera nuestra ayuda. Existen clientes que queremos contactar a diferentes horas o fechas importantes y felicitaciones que no queremos dejar pasar sin mandar un mensaje. ¡Con este bot de whatsapp puedes automatizar todo eso y más!
En esta primera implementación utilizamos la librería de Alright para mandar mensajes a través de whatsapp web. Solamente es necesario el inicio de sesión una vez y de ahí en delante todo se puede automatizar.
Alright usa Selenium para manejar el navegador de Chrome con “chromedriver”, así que tendremos que instalar y agregar al PATH del sistema a chromedrive.
Con Alright podrás:
- Enviar Mensajes
- Enviar Imágenes
- Enviar Videos
- Enviar Documentos
Comencemos
1) Instala Alright
Necesitamos tener Alright instalado en nuestra máquina para comenzar a usarlo, se puede hacer directamente desde GitHub o usando pip.
Instalación directa:
Primero clonamos o descargamos el repositorio en un directorio local y luego pasamos al directorio del proyecto y ejecutamos la instalación como se muestra en el ejemplo del siguiente comando:
git clone https://github.com/Kalebu/alright
cd alright
alright > python setup.py install
git clone https://github.com/Kalebu/alright
cd alright
alright > python setup.py install
Instalación por pip:
pip install alright
2) Instalando chromedriver para Selenium
Debajo de Alright está Selenium que hace todo el trabajo de automatización controlando directamente el navegador, por lo que debes tener un controlador de Selenium en tu PC para que funcione correctamente.
Alright está principalmente hecho y probado en un navegador Chrome y, por lo tanto, pronto será necesario que tengas Chrome y chromedriver instalados:
Debes asegurarte de descargar la versión de chromedriver compatible con la versión de Chrome que estás utilizando; de lo contrario, no funcionará. Tampoco olvides extraer del zip el archivo de chromedriver.
Aquí una guía para verificar la versión de Chrome que está usando: How to Find Your Internet Browser Version Number – Google Chrome
3) Agregar el PATH de chromedriver al sistema
El último paso para configurar es agregar la ubicación del controlador de chromedriver al path para que pueda ser descubierto por Alright, esto varía según el sistema operativo que esté utilizando.
Por ejemplo, digamos que la ubicación actual de nuestro controlador en /home/user/chromedriver (puede ver la ruta completa a su controlador ejecutando el comando pwd). Así se haría:
Linux
Para que Linux agregue permanentemente una ruta al navegador, haga esto;
nano ~ / .bashrc
y luego agregue el comando para exportar la carpeta en la parte inferior del archivo y luego Ctrl + X para guardarlo
export PATH = "$ PATH:/home/user/chromedriver"
Windows
En el caso de haber descargado y descromprimido chromedriver en la carpeta de descargas, se ejecutaría este comando en el Powershell de windows.
$env:chromedriver = 'C:\Users\username\Downloads\chromedriver'
Los usuarios de Windows pueden seguir esta guía para hacerlo de otras formas o de forma permanente.
Ahora, después de eso, estamos listos para automatizar y controlar la web de whatsappp usando alright
Ejecutando Alright
Cuando ejecutas Alright, solo puede tener una ventana del navegador controlada a la vez, si ejecutas mientras otra ventana está activa, genera un error, así que asegúrese de cerrar la ventana controlada antes de ejecutar otra.
Ejemplo de código para mandar mensajes a múltiples contactos
from random import randint
from time import sleep
import re
from alright import WhatsApp
messenger = WhatsApp()
messages = [
'+5218444456894',
'Mom:',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed...',
'5218445803863',
'Juan Friend 1:',
'Feliz Navidad!',
'5218442131338',
'José Friend 2:',
'Merry Christmas!',
'+1 (832) 123-4159',
'Raul Friend 3:',
'Happy birthday dude!',
'+52 1 81 9484 5560',
'Dad:',
'Hola papá!'
]
size = len(messages)
counter = 0
while counter < size:
num = re.sub("[^0-9]", "", messages[counter]) #makes sure phone numbers are in correct format
print(messages[counter])
print(num)
print(messages[counter + 1])
print(messages[counter + 2])
messenger.find_user(num)
messenger.send_message(messages[counter + 2])
print('---------------', '\n')
counter = counter + 3
sleep(randint(10,100))
¡Listo! Ya enviamos nuestros primeros mensajes automátizados así de sencillo.
Este artículo está basado en el blog post original de Jordan Kalebu “Python wrapper for WhatsApp web-based on selenium” y puedes encontrar la liga al repositorio original de Github aquí.
En el artículo original puedes encontrar más información a cerca de cómo mandar mensajes a contactos no guardados, a contactos a través de su nombre, como mandar imágenes, videos y documentos entre otros datos útiles.