Skip to content

Instantly share code, notes, and snippets.

@eliasalbuquerque
Last active January 15, 2024 12:00
Show Gist options
  • Save eliasalbuquerque/b5fbde6e89aa7ce384005fc4775a29f4 to your computer and use it in GitHub Desktop.
Save eliasalbuquerque/b5fbde6e89aa7ce384005fc4775a29f4 to your computer and use it in GitHub Desktop.
Curso Dev Aprender | Jhonatan de Souza

Projeto 4 - Bot de Envio de mensagem em massa no WhatsApp

Este é um script Python que automatiza o envio de mensagens em massa no WhatsApp Web. Aqui está uma descrição breve do código:

  1. Importação de módulos: O script importa vários módulos, incluindo os, webbrowser, pyautogui, logging, logging.config, decouple.config e time.

  2. Configuração de logging: O script configura o logging usando um arquivo 'config.ini'.

  3. Função enviar_mensagens_whatsapp_web(): Esta função é responsável por enviar mensagens no WhatsApp Web.

    • Primeiro, ela carrega as configurações de contato do arquivo .env.
    • Em seguida, itera sobre todos os contatos no arquivo .env que começam com 'CONTATO_'.
    • Para cada contato, ela abre o WhatsApp Web usando a URL de API do WhatsApp.
    • Em seguida, ela usa o módulo pyautogui para simular cliques e digitação para enviar a mensagem.
    • Se ocorrer um erro ao abrir o WhatsApp Web, ele será registrado e um alerta será exibido.
    • Por fim, ela aguarda 240 segundos antes de passar para o próximo contato para evitar ser detectada como um bot.
  4. Execução do script: Se o script for executado como o script principal, ele chamará a função enviar_mensagens_whatsapp_web() para iniciar o processo de envio de mensagens.

Código

# 202401 - Python 3.12.0
# 4.19 - Projeto 4 - Bot de Envio de mensagem em massa no WhatsApp


import os
import webbrowser
import pyautogui
import logging
import logging.config
from decouple import config
from time import sleep


# configurando logging:
logging.config.fileConfig(fname='config.ini', disable_existing_loggers=False)
logger = logging.getLogger(__name__)


def enviar_mensagens_whatsapp_web():
    logging.info('INICIO: Enviando Mensagem WhatsApp.')

    # carregar configuracoes
    config('CONTATO_01')  # Activate loading

    # iterar por contatos no arquivo .env
    for key, value in os.environ.items():
        if key.startswith('CONTATO_'):
            contato_numero = value
            contato_url = f'https://api.whatsapp.com/send?phone={contato_numero}'

            # enviar mensagem
            try:
                webbrowser.open(contato_url)
                sleep(5)
                pyautogui.click(1429,338, duration=.5) # "continue to chat"
                sleep(3)
                pyautogui.click(1429,410, duration=.5) # "use whatsapp web"
                sleep(5)
                pyautogui.click(1596,980, duration=.5) # "type a message"
                sleep(3)
                pyautogui.typewrite('Ola programador!') # mensagem
                sleep(3)
                pyautogui.hotkey('enter') # botao "send"
                logging.info('abriu whatsapp e enviou mensagem.')

            except webbrowser.Error as e:
                logging.error(f'ERRO: ao abrir WhatsApp Web para {contato_numero}:\n- {type(e).__name__}: {e}')
                pyautogui.alert(f'ERRO: ao abrir WhatsApp Web para {contato_numero}')

            # delay anti-bot
            sleep(240)

if __name__ == '__main__':
    enviar_mensagens_whatsapp_web()

Resultado Final

whatsapp-messages


GitHub: eliasalbuquerque/python-automation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment