Blog

Postado em em 24 de abril de 2021

Enviar Mensagens Automáticas no WhatsApp Usando Python

Enviar Mensagens Automáticas no WhatsApp

Nessa aula vamos te mostrar como enviar mensagens automáticas no WhatsApp utilizando o Python, para facilitar suas tarefas repetidas!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Como Enviar Mensagens Automáticas no WhatsApp?

Você já deve ter pensado ou até precisou fazer uma automação no Python para poder enviar mensagens automáticas no WhatsApp, certo?

Na aula de hoje nós vamos te mostrar como enviar mensagem para várias pessoas ou grupos no WhatsApp utilizando o Python!

É isso mesmo que você leu! Vamos te mostrar como enviar mensagem pelo Whatsapp utilizando o Python!

Está curioso para saber como fazer essa automação? Então fica com a gente que vamos te mostrar o passo a passo!

Automação de Mensagens no Python

Antes de iniciar é importante ressaltar que vamos utilizar a biblioteca selenium para fazer esse procedimento.

Essa é uma biblioteca que faz a interação do Python com o navegador. Caso ainda não tenha essa biblioteca instalada e não saiba como utilizar nós temos um post falando somente sobre isso.

Então caso precise dessas informações para dar continuidade basta clicar aqui para poder fazer suas configurações e aprender a utilizar o selenium.

Lembrando que juntamente com o selenium nós vamos mostrar nesse post a parte do Webdriver, que é o que de fato vai fazer a interação do selenium com o navegador.

Então nesse post vamos mostrar os dois mais utilizados que é para o Fire Fox e para o Google Chrome.

IMPORTANTE: ESSE PROCEDIMENTO QUE SERÁ ENSINADO TEM OBJETIVO EDUCACIONAL. ENTÃO É MUITO IMPORTANTE ESTAR CIENTE DISSO, POIS O WHATSAPP NÃO GOSTA DE AUTOMAÇÕES E PODE DAR PROBLEMA. PODE TER SEU NÚMERO BLOQUEADO DEPENDENDO DA FORMA QUE FOR UTILIZADO. ENTÃO NÃO NOS RESPONSABILIZAMOS PELOS SEUS ATOS, ESTAMOS APENAS ENSINANDO COMO AUTOMATIZAR UM PROCESSO PARA FACILITAR EM ALGUNS CASO. O ENVIO DE UM NÚMERO EXAGERADO PODE SIM TRAZER PROBLEMAS.

Código para importar o arquivo com as informações

Aqui vamos iniciar importante a biblioteca do pandas (caso não saiba o que é essa biblioteca e tenha interesse em uma aula introdutória basta clicar aqui).

Lembrando que nesse arquivo enviar.xlsx o usuário vai inserir o nome da pessoa, o número no formato 55 + DDD (2 dígitos) + número da pessoa.

Agora vamos ao código que vai servir para enviarmos as mensagens.

Na parte inicial nós vamos fazer a importação das bibliotecas para que possamos utilizar alguns comandos dentro do Python.

Logo abaixo temos a atribuição do navegador, que neste caso pode mudar caso esteja utilizando um navegador diferente.

Em seguida temos o comando .get() que vai permitir com que o usuário insira um site para o navegador acessar.

IMPORTANTE: É importante ressaltar que o programa vai abrir uma página da web onde não tem informações salvas, então o usuário terá que abrir o seu WhatsApp nessa página com a utilização do QR Code para poder enviar as mensagens.

Na linha seguinte, temos uma estrutura de repetição While, que vai verificar o tamanho da lista onde temos todos os elementos da página que são iguais a “side”.

Esse side é um elemento do painel lateral que temos no Whatsapp, então estamos fazendo uma comparação se o tamanho dessa lista é menor do que 1.

O que isso quer dizer? Se o tamanho (len()) dessa lista que estamos procurando for menor do que 1, quer dizer que o nosso código não achou esse ID “side”, ou seja, não estamos logado no WhatsApp.

Com isso vamos esperar 1 segundo e fazer a verificação de novo, isso será feito até que o usuário faça o login no WhatsApp para dar continuidade ao código e não executar o restante do código sem estar no local correto.

Feita essa verificação nós podemos partir para a execução do código que irá enviar as mensagens!

Na próxima parte do código vamos fazer uma estrutura de repetição para ir repetindo o mesmo procedimento até que todas as mensagens sejam enviadas.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib

navegador = webdriver.Firefox()
navegador.get("https://web.whatsapp.com/")


while len(navegador.find_elements_by_id("side")) < 1:
    time.sleep(1)

# já estamos com o login feito no whatsapp web
for i, mensagem in enumerate(contatos_df['Mensagem']):
    pessoa = contatos_df.loc[i, "Pessoa"]
    numero = contatos_df.loc[i, "Número"]
    texto = urllib.parse.quote(f"Oi {pessoa}! {mensagem}")
    link = f"https://web.whatsapp.com/send?phone={numero}&text={texto}"
    navegador.get(link)
    while len(navegador.find_elements_by_id("side")) < 1:
        time.sleep(1)
    navegador.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[4]/div[1]/footer/div[1]/div[2]/div/div[2]').send_keys(Keys.ENTER)
    time.sleep(10)

Na primeira parte vamos pegar o índice de cada informação que temos (que foi mostrado na imagem anterior a esquerda da coluna Pessoa). E vamos armazenar na variável mensagem o conteúdo que temos na nossa coluna mensagem.

Isso quer dizer que no índice 0 nós vamos armazenar a mensagem “E aí, tudo bem” e assim por diante.

Ou seja, vamos criar uma matriz com todas essas informações que temos na nossa lista que puxamos do Excel.

Vamos fazer isso para o nome da pessoa e do número para que possamos armazenar as informações para utilizar logo em seguida.

Para essa parte vamos utilizar o .loc que explicamos como funciona no nosso post de introdução ao pandas.

Na parte da variável texto nós vamos utilizar o urllib.parse.quote() para codificar a mensagem, isso é necessário para que ela fique no formato correto, em seguida vamos aplicar esse texto já codificado a nossa mensagem para enviar.

https://web.whatsapp.com/send?phone=NUMERO&text=MENSAGEM

Esse link é o que vamos utilizar para poder fazer o envio, então ao colocar o número da pessoa e a mensagem já codificada já vamos conseguir abrir uma conversa mesmo não tendo o número dessa pessoa salvo no celular e enviar a mensagem.

OBS: No código estamos utilizando uma fstring para poder inserir as variáveis dentro do link sem precisar fazer isso de forma manual. Caso não saiba o que é uma fstring nós explicamos nesse post aqui!

Novamente vamos repetir o código inicial para verificar se já estamos logado para poder enviar a mensagem.

Isso é importante, pois esse processo de abrir conversas e até mesmo logar no WhatsApp demora um pouco, então para não executar o código de forma errada, vamos aguardar até que estejamos logado.

Por fim vamos utilizar o navegador.find_element_by_xpath para pode dizer ao Python o elemento que ele deve procurar pelo xpath, esse é um elemento de posição dos elementos que tem na página do seu navegador.

Para saber como copiar xpath pode acessar nossa outra publicação de automação web.

Essa parte final do código é muito importante, pois quando colocamos a mensagem no link e acessamos esse link você vai notar que a mensagem já vai estar escrita na caixa de texto.

No entanto, é necessário pressionar a tecla “enter” para que o texto seja enviado, por isso vamos pegar o caminho da caixa de texto para selecioná-la e pressionar enter para enviar a mensagem.

Para isso vamos utilizar o método do selenium para apertar esse botão:

navegador.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[4]/div[1]/footer/div[1]/div[2]/div/div[2]').send_keys(Keys.ENTER)

Primeiramente vamos encontrar esse xpath que é o que copiamos do nosso navegador (lembrando que os códigos vão variar de navegador para navegador, então copie o xpath corretamente para que funcione).

Em seguida vamos utilizar o .send_keys(Keys.ENTER) para pressionar enter quando estivermos nessa caixa de texto.

Pronto! Agora basta rodar o código e esperar enviar as mensagens!

IMPORTANTE: Na parte final do código colocamos time.sleep(10) para que o código espere 10 segundos antes de ir para a próxima mensagem, pois a mensagem pode levar um tempo para carregar e para ser de fato enviada.

Agora o seu código vai ler o arquivo de nomes, números e mensagem. Em seguida vamos gravar essas informações em um dataframe e começar a enviar as mensagens e uma estrutura de repetição.

E no final de cada repetição vamos abrir o link do envio da mensagem já com o número da pessoa e a mensagem escrita e apenas pressionar enter para enviar as mensagens.

Conclusão para Enviar Mensagens Automáticas no WhatsApp

Nessa aula foi possível aprender como automatizar o envio de mensagens através do WhatsApp utilizando o Python.

Novamente vale ressaltar que a utilização desse procedimento é de total responsabilidade do usuário, pois pode acarretar o bloqueio do seu número.

Portanto é necessário cautela no uso desse código e a questão do tempo de envio, pois mensagens enviadas muito rápidas (com pouco tempo entre um envio e outro) serão identificadas como automação e pode também bloquear o número.

Agora basta praticar o que aprendeu para poder fazer suas automações e facilitar seus processos!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso gratuito?


Vai começar o maior evento de Power BI da América Latina! Quer participar? Preencha seu e-mail abaixo: