Instruções para aquisição

Instale o zBot (para Windows). Rode este sistema no seu computador e vários outros que podem ser baixados diretamente pelo zBot ou criados por você mesmo(a)!

Detalhes do Sistema

Envio pelo Whats Web

15/11/2023 | Build: 108
Do pacote: Script Enviador Whats

Descrição: Exemplo mostrando como emular cliques e digitação para enviar mensagens para uma lista de contatos. Esta demonstração utiliza o Whatsapp Web, mas pode ser modificada para outras plataformas.

Tutorial em Vídeo

Ajuda

Permite o envio de texto, imagem, vídeo e outros arquivos anexos. Todo o processo é feito por emulação humana, usando cliques e digitação na tela do seu computador. O Exemplo usa o Whatsapp web, mas pode ser adaptado para outras plataformas, fazendo alterações no código do script.

As mensagens podem ser personalizadas com quaisquer campos da tabela de dados. Basta colocar o nome do campo entre chaves, exemplo: Olá {nome}, seu pedido {id_pedido} foi processado...

Verifique, se necessário, quaisquer políticas, regras, leis e outros tipos de implicações legais ou restritas às políticas de uso de quaisquer sistemas de terceiros com os quais o zBot possa interagir por meio dos scripts desenvolvidos por você ou por outras partes. A empresa fornecedora do zBot não se responsabiliza por quaisquer consequências que você, como usuário, possa sofrer por conta do uso dos scripts criados ou baixados de quaisquer fontes.

Código do script

Este script também pode ser baixado diretamente pelo software zBot
&CriarBotao("1- Abrir Whatsapp Web";"abrir whatsapp";200) //*
&CriarBotao("2- Definir mensagens";"definir mensagens";200) //*
&CriarBotao("3- Inserir contatos";"inserir contatos";200) //*
&CriarBotao("4- Configurações de envio";"configurações";200) //*
&CriarBotao("5- Efetuar envio";"efetuar envio";180) //*
&CriarBotao("🚶Abrir contato atual";"abrir contato atual";220) //*
&CriarBotao("Zerar status";"zerar status") //*

&TbAdicionarCampo("arquivo"; "texto")[0] //* tipo: texto, inteiro, moeda, data
&TbDefinirCamposVisiveis("id_unico,nome,whatsapp,data_contato,categoria,status,data_cadastro,data_atualização,obs,arquivo")[0] //*


#zerar status
   &TbSelecionarTudo("sim")[0] //* sim marca tudo. não desmarca tudo
   &TbSelecionadosValorDefinir("status";"")[0] //*
   &TbSelecionarTudo("não")[0] //* sim marca tudo. não desmarca tudo
#

#inicializar variáveis
//* Essas informações servem apenas para referência para sabermos o que é usado no código
[mensagem] = ""
[legenda] = ""
[arquivo] = ""
[numero] = ""
[nome] = ""
[definiu_mensagens] = "não"
#

#inserir contatos
   [lista_contatos] = ""
   &ValorPedirVarios("Inserir contatos do Whatsapp"; "lista_contatos")[0] //*
   &Se([lista_contatos];#-\#-/;"")
      &TextoQtdLinhas([lista_contatos]; "qtd")[0] //*
      &Repetir([qtd]) //* a variável _indice terá o número do ciclo atual
         [contato] = [lista_contatos*[_indice]]
         //&TextoDeixarNumeros([contato];"contato")[0] //* Retorna os números de um texto
         &TextoFormatarTelefone([contato];"contato")[0] //*
         [linha] = ""
         &TbLocalizar("whatsapp";[contato]; "linha")[0] //*
         &Se([linha*whatsapp];=;"")
            &StatusInserir("Inserido: [contato]";"sucesso")[0]
            &TbInserir("whatsapp";[contato])[0] //*
         .senao
            &StatusInserir("Já existe: [contato]";"erro")[0]   
         .fimse
      .fimrepetir   
   .fimse
#

#definir mensagens
    &ValorPedirVarios("Mensagens para enviar"; "mensagem1, imagem1, legenda_img1, arquivo1, legenda_arq1, mensagem2, imagem2, legenda_img2")[0] //*
    [definiu_mensagens] = "sim"
#

// Função principal de envio
#efetuar envio
&Se([definiu_mensagens];diferente;"sim")
    &Mensagem("Primeiro clique em DEFINIR MENSAGENS")
    &ScriptEncerrar()
.fimse

&TbComando("primeiro")[0] //* primeiro, anterior, próximo, último, apagar
&Marcador("loop")
&TbLerLinha("linha")[0] //*
[numero] = [linha*whatsapp]
&TextoDeixarNumeros([numero];"numero")[0] //* Retorna os números de um texto
[nome] = [linha*nome]

&Se([numero];igual;"")
    &VaiPara("continuar")
.fimse

&TbLerCampo("status")[0] //*
&Se([status];#-\#-/;"")
    &VaiPara("continuar")
.fimse

&TextoAdicionarComeco([numero]; [Código do país]; "numero")[0] //*

&BlocoExec("abrir whatsapp")[1] //*
&BlocoExec("aguardar contato abrir")[2] //*

&Se([contato_abriu];"igual";"sim")
    &StatusInserir("Enviando mensagem para [numero]";"cinza")[0]
    &BlocoExec("enviar mensagens")[0] //*
    &TbValorDefinir("status"; "envio processado")[0] //*
    &TextoHojeInfo("data")[0] //* valor -#-/ data, ano, mês, dia, hora, minuto, segundo, dia_semana, secao_hora
    &TbValorDefinir("data_contato"; [data])[0] //*
    [enviou] = "sim"
.senao
    &StatusInserir("Abertura do contato não identificada. Indo para o próximo...";"erroMensagem 1Olá, testesMensagem 1Olá, testes")[0]    
.fimse

&Marcador("continuar")
&TbComando("próximo")[0] //* primeiro, anterior, próximo, último, apagar
&Se([último resultado];"diferente";"FALHA")
    &VaiPara("loop")
.senao
    &Mensagem("Fim do processamento")
.fimse

&Se([enviou];#-\#-/;"sim")
   &Mensagem("Nenhum envio foi efetuado. O sistema só envia para registros com status vazio. Carregue uma lista de números ou clique no botão ZERAR STATUS para enviar novamente para esta mesma lista")
.fimse

#

//* Função que envia as mensagens preenchidas para o contato atual
#enviar mensagens
&NavegadorClicarPerguntar(20231115151639400;"Indique o local do campo onde digita a mensagem")[0.5] //*

[mensagem] = [mensagem1]
&Se([mensagem];"diferente";"")  
    &StatusInserir("Enviando mensagem 1";"preto")[0]  
    &ValorProcessar("mensagem")[0] //*       
    &BlocoExec("enviar texto")[0] //*
.fimse

[arquivo] = [imagem1]
[legenda] = [legenda_img1]
&ValorProcessar("legenda")[0] //*
&Se([arquivo];"diferente";"")
    &StatusInserir("Enviando imagem 1";"preto")[0]
    &BlocoExec("enviar imagem")[0] //*
.fimse

[arquivo] = [arquivo1]
[legenda] = [legenda_arq1]
&ValorProcessar("legenda")[0] //*
&Se([arquivo];"diferente";"")
    &StatusInserir("Enviando arquivo 1";"preto")[0]
    &BlocoExec("enviar arquivo")[0] //*
.fimse

[mensagem] = [mensagem2]
&Se([mensagem];"diferente";"")
    &StatusInserir("Enviando mensagem 2";"preto")[0]    
    &ValorProcessar("mensagem")[0] //*       
    &BlocoExec("enviar texto")[0] //*
.fimse

[arquivo] = [imagem2]
[legenda] = [legenda_img2]
&ValorProcessar("legenda")[0] //*
&Se([arquivo];"diferente";"")
    &StatusInserir("Enviando imagem 2Mensagem 1Olá, testesMensagem 1Olá, testes";"preto")[0]
    &BlocoExec("enviar imagem")[0] //*
.fimse
#


#abrir contato atual
&TbLerCampo("whatsapp")[0] //*
[numero] = [whatsapp]
&mensagem([numero])
&TextoDeixarNumeros([numero];"numero")[0] //* Retorna os números de um texto
[whatsapp_url] = "https://web.whatsapp.com/send?phone=[numero]"
&NavegadorIr([whatsapp_url])[1] //*    
#
0
//* - - - - - - - - - - - 
#abrir whatsapp
[whatsapp_url] = "https://web.whatsapp.com/send?phone=[numero]"
&NavegadorIr([whatsapp_url])[1] //*
&NavegadorPosicionar(50;50;1140;762)[0] //* topo, esquerda, largura, altura
#

#aguardar contato abrir
[contador]=1
[contato_abriu] = "não"
&Marcador("aguardar")
&NavegadorTextoObter("texto_navegador")[0] //*
&TextoTem([texto_navegador];[texto do campo de mensagem];"resultado")[0] //* texto Digite uma mensagem

&Se([contador];maior;[ciclos de espera para abrir contato])
    &VaiPara("sair aguardar")
.fimse

&Se([resultado];"igual";"não")
    &StatusInserir("aguardando contato abrir";"alerta")[0] //* 
    &ValorInc("contador";1)[5] //*
    
    &Se([contador];"maior";2)
        //* Vamos ver então se o contato é inválido
        [resultado2] = "não"
        &TextoTem([texto_navegador];[mensagem de contato inválido];"resultado2")[0] //*
        &Se([resultado2];"igual";"sim")
            [contato_abriu] = "não"
            &StatusInserir("Contato inválido";"erro")[0] //*
            &TbValorDefinir("status"; "contato inválido")[0] //*
            &VaiPara("sair aguardar")            
        .fimse     
        
        //* Vamos ver então se o contato bloqueado
        [resultado3] = "não"
        &TextoTem([texto_navegador];[texto contato bloqueado];"resultado3")[0] //*
        &Se([resultado3];"igual";"sim")
            [contato_abriu] = "não"
            &StatusInserir("Contato bloqueado";"erro")[0] //*
            &TbValorDefinir("status"; "contato bloqueado")[0] //*
            &VaiPara("sair aguardar")            
        .fimse    
    .fimse    
    
    &VaiPara("aguardar")
.fimse
[contato_abriu] = "sim"
&Marcador("sair aguardar")
#

#configurações
&ValorPedirVarios("Configurações";"Código do país, Texto do campo de mensagem, Mensagem de contato inválido, texto contato bloqueado, Pausa operacional extra, Ciclos de espera para abrir contato")[0] //*
#

//* funções para envio de tipos de dados específicos
//* Considera que o cursor está ativo no campo de mensagem
#enviar texto
&Se([mensagem];"diferente";"") //* teste -#-/ igual, diferente, contém, não contém, começa, não começa, termina, não termina
    &NavegadorClicarPerguntar(20231115151639400;"Indique o local do campo onde digita a mensagem")[0.5] //*
    &ColarTexto([mensagem])[1] //* Cola um valor definido no parâmetro
    &Pausar([pausa operacional extra])
    &NavegadorClicarPerguntar(20231115151639401;"Local do botão para enviar a mensagem")[2] //*
.fimse
#

#enviar imagem
&Se([arquivo];"diferente";"") //* teste -#-/ igual, diferente, contém, não contém, começa, não começa, termina, não termina
    &NavegadorClicarPerguntar(20231115151639400;"Indique o local do campo onde digita a mensagem")[0.5] //*
    &ColarArquivo([arquivo])[5] //*
    &Pausar([pausa operacional extra])
    &Se([legenda];"diferente";"")
        &NavegadorClicarPerguntar(20231115151639402;"Local do campo de legenda")[1] //*
        &ColarTexto([legenda])[1] //* Cola um valor definido no parâmetro       
    .fimse
    &NavegadorClicarPerguntar(20231115151639403;"Local do botão para enviar a imagem")[2] //*
    &Pausar([pausa operacional extra])    
.fimse
#

#enviar arquivo
&Se([arquivo];"diferente";"") //* teste -#-/ igual, diferente, contém, não contém, começa, não começa, termina, não termina
    &NavegadorClicarPerguntar(20231116171700903;"Local do botão para anexar o arquivo")[1] //*
    &NavegadorClicarPerguntar(20231116171700904;"Opção DOCUMENTO")[5] //*
    &Pausar([pausa operacional extra])
    &ColarTexto([arquivo])[0.5] //*
    &DigitarEnter()[3]
    &Pausar([pausa operacional extra])
    &Se([legenda];"diferente";"")
        &NavegadorClicarPerguntar(20231116171700905;"Local do campo de legenda")[1] //*
        &ColarTexto([legenda])[1] //* Cola um valor definido no parâmetro               
    .fimse
    &NavegadorClicarPerguntar(20231116171700906;"Local do botão para enviar o arquivo")[2] //*
.fimse
#

#enviar vídeo
&Se([arquivo];"diferente";"") //* teste -#-/ igual, diferente, contém, não contém, começa, não começa, termina, não termina
    &NavegadorClicarPerguntar(20231116171700903;"Local do botão para anexar o arquivo")[1] //*
    &NavegadorClicarPerguntar(20231116174620275;"Opção Fotos e Vídeos")[5] //*
    &Pausar([pausa operacional extra])
    &ColarTexto([arquivo])[0.5] //*
    &DigitarEnter()[3]
    &Pausar([pausa operacional extra]) 
    &Se([legenda];"diferente";"")
        &NavegadorClicarPerguntar(20231116171700905;"Local do campo de legenda")[1] //*
        &ColarTexto([legenda])[1] //* Cola um valor definido no parâmetro       
    .fimse
    &NavegadorClicarPerguntar(20231116171700906;"Local do botão para enviar o vídeo")[5] //*
    &Pausar([pausa operacional extra])    
.fimse
#

// // //

#informações
Atenção: Na primeira vez que conectar com o Whatsapp Web, aguarde uns 15 minutos antes de começar a usar, pois o Whatsapp demora muito até preparar todo o banco de dados. Se não fizer isso, o envio pode falhar e você vai achar muito lento, quando na verdade bastaria aguardar o carretamento completo do banco, que só precisa ser feito uma vez.

1- Comece abrindo o Whatsapp Web para iniciar o navegador e se certificar de que a sua conta do Whatsapp está aberta;
2- Comece clicando no botão "definir mensagem";
2- Em seguida, revise as configurações em "configurações de envio";
4- Insira, abra ou cole a lista de contatos (números) que receberão a mensagem;
5- Clique em "efetuar envio" para enviar as mensagens

- - - - - -
Ao definir as mensagens, simplesmente deixe em branco os campos que não quiser usar 
#

#informações_exibir
   &ExecutarComando("https://www.linkws.com.br/zbot/loja/script_det.php?id=20106132536295")[0]
#

Notas de Atualização

22/01/2024
* Agora o sistema só envia mensagem para registros que estiverem com o status vazio. Há também um botão para zerar o status de todos os contatos da tabela

28/12/2023
* Adicionamos um botão dedicado para inserir novos contatos na tabela de envio. Lembrando que nativamente já há incontáveis formas de inserir e gerenciar dados em qualquer tabela, incluindo um assistente de importação de contatos acessível pelo botão 'Inserir'

Termos gerais dos scripts

Os scritps gratuitos ou pagos tem como objetivo disponibilizar funções ou demonstrar possíveis aplicações que podem ser criadas usando a linguagem de programação de scripts do zBot.
Seu código-fonte é fornecido e pode ser livremente estudado, adaptado ou alterado pelo usuário que o adquire. Eventualmente são usados links ou exemplos de funções interagindo com sistemas ou sites populares, mas o zBot não tem nenhum vínculo, propriedade nem parceria com quaisquer produtos de terceiros, nem se responsabiliza por nenhuma consequência de sua utilização, cabendo exclusivamente ao usuário a total responsabilidade sobre isso, sempre levando em conta a licitide de sua aplicação e eventuais termos de uso ou propriedade de terceiros que devam ser considerados.
 Fale conosco