Hoje eu vou te mostrar o envio automático de mensagem no WhatsApp de uma forma completa utilizando o Python!
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 por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Você provavelmente já precisou enviar mensagem com Python para deixar sua automação mais completa não é mesmo?
A ideia da aula de hoje é te mostrar como enviar mensagens com anexo no WhatsApp além das mensagens comuns!
Antes de iniciar a aula é importante ressaltar que o WhatsApp não gosta de automações que não sejam com a sua própria API.
Então é importante que você tome cuidado com o que está fazendo, nós estamos apenas ensinando como fazer essa automação, mas como você vai usar é responsabilidade sua.
É possível até que tenha seu número bloqueado dependendo de como você utilizar essa automação com Python.
Outro ponto importante é que nessa aula nós vamos utilizar o Selenium, então é importante que já tenha um conhecimento sobre a ferramenta.
Caso ainda não saiba o que é ou não tem muito conhecimento basta clicar aqui que temos um post falando mais sobre ele e mostrando as configurações.
Aqui temos alguns cuidados que você precisa tomar, já falamos sobre isso, mas é sempre bom relembrar, pois pode gerar problemas para quem está utilizando.
Para construir esse código de envios com Python integrando com WhatsApp nós vamos utilizar 3 blocos de códigos.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
navegador = webdriver.Chrome()
navegador.get("https://web.whatsapp.com")
# esperar a tela do whatsapp carregar
while len(navegador.find_elements(By.ID, 'side')) < 1: # -> lista for vazia -> que o elemento não existe ainda
time.sleep(1)
time.sleep(2) # só uma garantia
Nesse primeiro código vamos fazer a importação das bibliotecas que serão utilizadas, depois vamos abrir o navegador, vamos abrir o site do whatsapp web.
Em seguida temos 2 pontos importantes, iniciando a estrutura de repetição while, para garantir que a tela do WhatsApp web carregou.
Aqui estamos procurando a lista lateral onde você tem seus contados, então se ela não estiver lá é porque a página ainda não carregou.
IMPORTANTE: Isso quer dizer que aqui você vai ter tempo suficiente para poder utilizar o QR Code para abrir o seu WhatsApp, já que por padrão o navegador que é aberto não tem suas informações gravadas.
Vamos agora para o segundo bloco de código!
# o whatsapp já carregou
import pandas as pd
tabela = pd.read_excel("Envios.xlsx")
display(tabela[['nome', 'mensagem', 'arquivo']]) # tem também uma coluna telefone dentro da tabela
Essa parte é após o WhatsApp carregar, ou seja, após você ler o QR Code para abrir o seu WhatsApp no computador.
Aqui vamos utilizar a biblioteca pandas para abrir o nosso arquivo Envios.xlsx que contém os nomes, as mensagens, os anexos e os números de telefones para quais vamos automatizar as mensagens.
Aqui você vai poder colocar o nome dos seus contatos, pode personalizar a mensagem que será enviada.
Já na coluna arquivo, se você não tiver nenhum anexo a ser enviado pode deixar o N, caso contrário pode colocar o nome do arquivo já com a extensão do arquivo.
Então dentro do código vamos ter a visualização dessas informações para que possamos utilizá-las para o envio das mensagens.
Agora vamos para o último bloco de código, que é o bloco onde de fato vamos fazer os envios de mensagens e anexos!
import urllib
import time
import os
for linha in tabela.index:
# enviar uma mensagem para a pessoa
nome = tabela.loc[linha, "nome"]
mensagem = tabela.loc[linha, "mensagem"]
arquivo = tabela.loc[linha, "arquivo"]
telefone = tabela.loc[linha, "telefone"]
texto = mensagem.replace("fulano", nome)
texto = urllib.parse.quote(texto)
# enviar a mensagem
link = f"https://web.whatsapp.com/send?phone={telefone}&text={texto}"
navegador.get(link)
# esperar a tela do whatsapp carregar -> espera um elemento que só existe na tela já carregada aparecer
while len(navegador.find_elements(By.ID, 'side')) < 1: # -> lista for vazia -> que o elemento não existe ainda
time.sleep(1)
time.sleep(2) # só uma garantia
# você tem que verificar se o número é inválido
if len(navegador.find_elements(By.XPATH, '//*[@id="app"]/div/span[2]/div/span/div/div/div/div/div/div[1]')) < 1:
# enviar a mensagem
navegador.find_element(By.XPATH, '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[2]/button/span').click()
if arquivo != "N":
caminho_completo = os.path.abspath(f"arquivos/{arquivo}")
navegador.find_element(By.XPATH,
'//*[@id="main"]/footer/div[1]/div/span[2]/div/div[1]/div[2]/div/div/span').click()
navegador.find_element(By.XPATH,
'//*[@id="main"]/footer/div[1]/div/span[2]/div/div[1]/div[2]/div/span/div/div/ul/li[4]/button/input').send_keys(caminho_completo)
time.sleep(2)
navegador.find_element(By.XPATH,
'//*[@id="app"]/div/div/div[2]/div[2]/span/div/span/div/div/div[2]/div/div[2]/div[2]/div/div').click()
time.sleep(5)
Inicialmente vamos fazer a importação das bibliotecas, em seguida vamos utilizar a estrutura de repetição for para que o nosso código seja repetido para todas as informações da nossa tabela.
Isso quer dizer que se tivermos 5 nomes o código será repetido 5 vezes, então independente da quantidade que colocar o código será repetido quantas vezes forem necessárias para fazer todos os envios.
IMPORTANTE: Novamente é bom tomar cuidado para quantas pessoas você faz esse envio automático para evitar com que você tome bloqueio no seu WhatsApp.
Depois de iniciar a nossa estrutura de repetição nós vamos armazenar as informações do nosso primeiro contato dentro das variáveis nome, mensagem, arquivo e telefone.
Em seguida nós temos a substituição do nome “fulano” na nossa mensagem para que você não tenha que ficar escrevendo manualmente o nome de cada pessoa.
Então dentro da mensagem nós temos fulano e no código vamos substituir esse texto pelo nome de cada contato.
Feito isso vamos fazer a criação do link, que nesse caso vamos utilizar o modelo do link abaixo:
link = f”https://web.whatsapp.com/send?phone={telefone}&text={texto}”
Com esse modelo de link nós vamos conseguir abrir uma página do WhatsApp Web na conversa com o contato com base no telefone, e já vamos ter o texto escrito!
Então a mensagem já fica escrita na sua caixa de texto, só faltando fazer o envio.
Sabendo disso nós podemos começar com a estrutura para o envio das mensagens. Vamos abrir o link já com as informações do contato.
OBS: Aqui novamente vamos esperar para que o WhatsApp carregue para que o código funcione normalmente.
Em seguida nós vamos verificar se o número é inválido ou não, pois quando o número é inválido o WhatsApp vai retornar uma espécie de erro.
Então vamos verificar com o xpath se temos esse elemento aparecendo, se encontrar é porque o número é inválido, caso contrário é um número válido e podemos enviar a mensagem.
OBS: Se você ainda não sabe como pegar o xpath de um elemento, que nada mais é do que o caminho (endereço) desse elemento, basta dar uma olhada rápida nesse nosso outro post para que você consiga buscar esse caminho, pois se estiver utilizando um navegador diferente é possível que tenha alguma diferença nesse caminho.
Feita essa verificação e o envio da mensagem de texto nós vamos verificar se a coluna de arquivo é diferente de N para saber se temos ou não um anexo a ser enviado.
Caso a coluna seja igual a N é porque não temos anexo então não temos mais nada a fazer. Vamos partir para o próximo contato.
Agora se o arquivo for diferente de N nós vamos utilizar novamente o xpath para encontrar e depois clicar nos botões para anexar o arquivo.
Então vamos clicar no botão de anexo, depois clicar no botão de arquivo (dentro das opções de anexo).
Depois nós vamos colocar o nome do arquivo dentro da caixa do nome do arquivo, assim não precisamos buscar o arquivo, então já podemos colocá-lo com o caminho completo.
Que nesse caso é a pasta arquivo + o nome do arquivo, pois temos essa pasta dentro da mesma pasta do nosso código.
Por fim vamos clicar no botão de enviar, pois até o momento o arquivo está na tela do WhatsApp pronto para ser enviado.
Pronto! Agora você já consegue enviar mensagens automáticas pelo WhatsApp com Python inclusive mensagens com anexo!
Nessa aula eu te mostrei como fazer o envio de mensagens pelo WhatsApp com Python de forma automática.
Você pode fazer o envio de mensagens de texto e ainda pode incluir anexos caso precise. Agora já pode criar sua lista de contatos para os quais vai enviar as mensagens e disparar de forma automática para todos eles.
Só tome cuidado como vai fazer o uso dessa automação, pois o WhatsApp não gosta de automações que não seja a dele, então use com sabedoria para não ter seu número bloqueado.
Para acessar outras publicações de Python, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.