Automatizando o envio de mensagens no WhatsApp com o Python

Cleiton Rocha
4 min readMar 23, 2021

--

Inaugurando um texto sobre uma linguagem que gosto e uso bastante: o Python.

Nesse artigo pretendo mostrar como é fácil criar um código que automatiza o envio de mensagens para dezenas, centenas ou milhares de pessoas por meio do WhatsApp integrado ao Python. Para realizar essa tarefa tudo o que é necessário é um banco de dados com o número de telefone dos indivíduos e a mensagem que se deseja enviar.

Então, bora lá!

Utilizando o Jupyter Notebook e instalando as bibliotecas

O local de trabalho escolhido é o Jupyter Notebook. Você pode utilizá-lo baixando o Anaconda Navegator. Depois de baixar, instalar e carregar o Anaconda, basta clicar no botão “launch” do Jupyter.

Ambiente do Anaconda
Interface simples do Jupyter

Uma vez que você já tem seu notebook carregado e pronto para uso, é preciso instalar as bibliotecas necessárias para a tarefa, são elas: Pandas, webbrowser, pyautogui e time. Algumas dessas bibliotecas já vem instaladas com o Anaconda, mas, caso seja preciso instalar alguma, isso poderá ser feito diretamente pelo notebook:

Com todas as bibliotecas instaladas, o próximo passo é importá-las:

Carregando um banco de dados local

Com o ambiente pronto para uso, agora é só começar a trabalhar com a base de dados. Para carregar um csv do próprio computador é preciso informar o caminho para esse arquivo (C:\\Users\\…) ou simplesmente colocá-lo dentro da pasta que está o notebook, essa segunda opção costuma ser mais prática por manter todos os arquivos do trabalho dentro de uma única pasta. Para carregar o arquivo, farei uso do queridinho do Python, o Pandas:

O csv tem essa cara:

Duas colunas são de extrema importância para realizar a tarefa de automatizar o processo de envio de mensagens:

1. Uma coluna com o número do indivíduo; que precisa estar com o código do país (o do Brasil é 55), seguido por um “_”, o DDD (no exemplo é 71) e, por fim, o número (atente-se a necessidade do nono dígito para algumas localidades).

A coluna com o número precisa então ter essa cara: 55_71912345678.

2. Uma coluna com a mensagem. A mensagem pode ser genérica, conter informações de outras colunas (leia o próximo item) através da função “CONCATENAR” do Excel, etc.

3. OPCIONAL: No dataset de exemplo, as colunas com nome (firstname) e sobrenome (lastname) dos indivíduos foram utilizadas para montar uma mensagem personalizada.

Disparando mensagens

Agora vem a parte principal: o envio das mensagens. Três bibliotecas vão realizar essa tarefa: o time, webbrowser e o pyautogui.

Vamos à explicação de cada uma delas:

A finalidade do time é inserir uma janela de tempo para o código rodar o passo a passo, isso serve para duas coisas: 1) Evitar que o envio seja detectado como um bot e 2) Evitar problemas de execução do código em computadores menos potentes.

O pyautogui vai automatizar todo o processo de envio das mensagens para os números presentes no banco de dados e o webbrowser vai abrir a URL que está presente no código (o WhatsApp Web).

O código vai ter essa cara:

Note que em cada etapa do código a função “time.sleep” é utilizada para inserir uma janela de tempo na execução de cada tarefa

Em linhas gerais, o que o código faz é:

  1. Abrir o WhatsApp Web em um número do dataset.
  2. Inserir a mensagem.
  3. Apertar a tecla “esc” (isso é necessário porque caso a mensagem contenha algum link, o WhatsApp vai abrir uma box e isso atrapalha a execução do restante do código. A tecla “esc” fecha essa box, mas mantêm o link, dessa forma o resto do código funciona normalmente).
  4. Enviar a mensagem (Por meio da tecla “enter”).
  5. Fechar a janela do WhatsApp Web (crtl + w).
  6. Reiniciar o processo para o próximo número no dataset.

Conclusão

Essa é uma série de 3 artigos tratando da integração Python + WhatsApp, onde esse foi o primeiro artigo. No próximo, meu colega Jonatas Silva vai mostrar como é possível acessar um banco de dados no MySQL/LimeSurvey para fazer envio de mensagens, o link para o artigo dele vai ser colocado aqui assim que for publicado. No terceiro e último artigo da série, vou mostrar como fazer a integração com o Google forms.

O notebook completo pode ser acessado no meu Github.

Meus canais de comunicação: Linkedin, Twitter, Github.

--

--

Cleiton Rocha

Economist and Data Scientist. Head of Data at BP Investimentos. Data Scientist at Cidacs (Fiocruz). ❤ by Data, Economy and Finance.