Skip to content

Instantly share code, notes, and snippets.

@DevWellington
Last active November 6, 2021 16:41
Show Gist options
  • Save DevWellington/6723294f939f4daf41ad5ec6a9e05295 to your computer and use it in GitHub Desktop.
Save DevWellington/6723294f939f4daf41ad5ec6a9e05295 to your computer and use it in GitHub Desktop.
bot web.whatsapp.com - send message for a contacts list
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
// search contact
function searchContact(searchValue, interval_add)
{
var interval = interval_add;
var count = 1;
var i = 0;
var timer = setInterval( function(){
i++;
if( i == count )
clearInterval(timer);
console.log(interval, "BEGIN. First step of process: ", searchValue);
// process send message
$(".icon-chat").click();
console.log(interval, 'click in icon-chat', searchValue);
// ativa o campo para digitar a pesquisa
$(".subheader-search:eq(0)").addClass("active");
console.log(interval, 'addClass active', searchValue);
// limpa o campo de pesquisa
$(".input-placeholder:eq(0)").text('');
console.log(interval, 'clean input placeholder', searchValue);
// cria o evento e insere o valor no campo de pesquisa
var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, searchValue, 0, "pt-BR");
console.log(interval, 'create event text', searchValue);
document.querySelector(".input-search").dispatchEvent(evt);
console.log(interval, 'dispatch event text', searchValue);
console.log(interval, ' - Insert text of search! - ', searchValue);
}, interval * 1000);
return searchValue;
}
function filterContact(searchValue, interval_add)
{
var interval = interval_add;
var count = 1;
var i = 0;
var timer = setInterval( function(){
i++;
if( i == count )
clearInterval(timer);
console.log(interval, 'click in contact', searchValue);
$(".contact").click();
console.log(interval, " - Contact filtered (filterContact)! - ", searchValue);
}, interval * 1000);
}
// send message
function sendMessage(contact, message, interval_add)
{
var interval = interval_add;
var count = 1;
var i = 0;
var timer = setInterval( function(){
var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, message, 0, "pt-BR");
console.log(interval, 'create event text', contact);
document.querySelector(".input-container .input").focus();
console.log(interval, 'focus in input text', contact);
document.querySelector(".input-container .input").dispatchEvent(evt);
console.log(interval, 'dispatch event text', contact);
i++;
if( i == count )
clearInterval(timer);
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
document.querySelector(".icon.btn-icon.icon-send").dispatchEvent(event);
console.log(interval, 'dispatch event click', contact);
console.log(interval, " - Messages sent (sendMessage)! - ", contact);
console.log(interval, "END. Last step of process: ", contact);
}, interval * 1000);
}
// send message for contact
function sendMessageToContact(contact, interval_search, interval_filter, interval_send, interval_all)
{
var i = 0;
var count = 1;
var interval = interval_all;
var message = "Olá, você deixou seu Whatsapp no meu Instagram a respeito do *Mini Curso GRATUITO de Importação*. \n\nMeu nome é *Wellington Rocha* e PARA PARTICIPAR do Mini Curso você precisa *me adicionar nos seus contatos*, e ATUALIZAR a lista, ok? É muito importante que *faça isso agora*, pois se não me adicionar você NÃO IRÁ receber o acesso ao Mini Curso, pois ele será enviado através da lista de transmissão, e o WhatsApp só vai te entregar a mensagem se eu estiver na sua lista de contatos. \n\nE por favor, escolha a opção de salvar no seu e-mail, caso o seu chip esteja cancelado ou inativo.\n\nDepois é só aguardar que *segunda-feira às 19:00hs* você vai receber o Mini Curso. Avise com um joinha 👍 assim que me adicionar e atualizar seus contatos, ok? \n\n*Obrigado, e até segunda*.";
var timer = setInterval(function(){
i++;
if( i == count )
clearInterval(timer);
searchContact(contact, interval_search);
filterContact(contact, interval_filter);
sendMessage(contact, message, interval_send);
}, interval * 1000);
}
// sendMessage from array list
var contactList = ["Meu Claro","Meu Tim","Meu Claro",'Meu Tim'];
var count = 1;
var interval_search = 3;
var interval_filter = 3;
var interval_send = 3;
var interval_all = 3;
$.each(contactList, function(k,contact){
var i = 0;
var timer = setInterval(function(){
interval_search = interval_all;
interval_filter = interval_search + 3;
interval_send = interval_search + 6;
i++;
if( i == count )
clearInterval(timer);
console.log(k, "Start contact process: ", contact);
sendMessageToContact(contact, interval_search, interval_filter, interval_send, interval_all);
interval_all = interval_send + 6;
// console.log(interval_search, 'interval_search');
// console.log(interval_filter, 'interval_filter');
// console.log(interval_send, 'interval_send');
// console.log(interval_all, 'interval_all');
// console.log(contact, interval_search, interval_filter, interval_send, interval_all);
}, interval_all*1000);
});
// search contact
function searchContact(searchValue, interval_add)
{
var interval = interval_add;
var count = 1;
var i = 0;
/*
// process send message
$(".icon-chat").click();
// ativa o campo para digitar a pesquisa
$(".subheader-search:eq(0)").addClass("active");
// limpa o campo de pesquisa
$(".input-placeholder:eq(0)").text('');
// cria o evento e insere o valor no campo de pesquisa
var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, searchValue, 0, "pt-BR");
document.querySelector(".input-search").dispatchEvent(evt);
*/
var timer = setInterval( function(){
$(".contact").click();
i++;
if( i == count )
clearInterval(timer);
console.log(interval, " - Contact selected (searchContact)! - ", searchValue);
}, interval*1000);
}
// send message
function sendMessage(contact, message, interval_add)
{
var interval = interval_add;
var count = 1;
var i = 0;
var timer = setInterval( function(){
/*var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, message, 0, "pt-BR");
document.querySelector(".input-container .input").focus();
document.querySelector(".input-container .input").dispatchEvent(evt);
*/
i++;
if( i == count )
clearInterval(timer);
/*
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
document.querySelector(".icon.btn-icon.icon-send").dispatchEvent(event);
*/
console.log(interval, " - Messages sent (sendMessage)! - ", contact);
}, interval * 1000);
}
// send message for contact
function sendMessageToContact(contact, interval_search, interval_send, interval_all)
{
var i = 0;
var count = 1;
var interval = interval_all;
var message = "Olá, você deixou seu Whatsapp no meu Instagram a respeito do *Mini Curso GRATUITO de Importação*. \n\nMeu nome é *Wellington Rocha* e PARA PARTICIPAR do Mini Curso você precisa *me adicionar nos seus contatos*, e ATUALIZAR a lista, ok? É muito importante que *faça isso agora*, pois se não me adicionar você NÃO IRÁ receber o acesso ao Mini Curso, pois ele será enviado através da lista de transmissão, e o WhatsApp só vai te entregar a mensagem se eu estiver na sua lista de contatos. \n\nE por favor, escolha a opção de salvar no seu e-mail, caso o seu chip esteja cancelado ou inativo.\n\nDepois é só aguardar que *segunda-feira às 19:00hs* você vai receber o Mini Curso. Avise com um joinha 👍 assim que me adicionar e atualizar seus contatos, ok? \n\n*Obrigado, e até segunda*.";
var timer = setInterval(function(){
i++;
if( i == count )
clearInterval(timer);
searchContact(contact, interval_search);
sendMessage(contact, message, interval_send);
}, interval * 1000);
}
// sendMessage from array list
var contactList = ['Meu Tim','Meu Claro','Meu Vivo'];
var count = 1;
var interval_search = 10;
var interval_send = 10;
var interval_all = 10;
$.each(contactList.sort(), function(k,contact){
var i = 0;
var timer = setInterval(function(){
interval_search = interval_all;
interval_send = interval_search + 20;
i++;
if( i == count )
clearInterval(timer);
sendMessageToContact(contact,interval_search, interval_send, interval_all);
console.log(interval_all, " - Iniciado processo do contato: ", contact);
interval_all = interval_send + 20;
console.log(interval_search);
console.log(interval_send);
console.log(interval_all);
console.log(contact, interval_search, interval_send, interval_all);
}, interval_all*1000);
});
console.log("Finishing!");
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
function sleepFor( sleepDuration )
{
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ /* do nothing */ }
}
// list and count contacts
function filterContactList(searchValue)
{
var interval = 5;
var count = 1;
var i = 0;
var timer = setInterval(function(){
i++;
if( i == count )
clearInterval(timer);
// process send message
$(".icon-chat").click();
// ativa o campo para digitar a pesquisa
$(".subheader-search:eq(0)").addClass("active");
// limpa o campo de pesquisa
$(".input-placeholder:eq(0)").text('');
// cria o evento e insere o valor no campo de pesquisa
var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, searchValue, 0, "en-US");
document.querySelector(".input-search").dispatchEvent(evt);
console.log("Contato selecionado (filterContactList)!");
}, interval * 1000);
}
// get all contacts - return array
function getContactList()
{
var interval = 5;
var count = 1;
var i = 0;
var contactList = new Array();
var timer = setInterval(function(){
i++;
if( i == count )
clearInterval(timer);
var qtdeContacts = 0;
$(".contact").each(function(k,v){
contactList.push($(this).find(".chat-body .chat-title span").text());
qtdeContacts++;
});
console.log(qtdeContacts + " contatos encontrados (getContactList)!");
}, interval * 1000);
return contactList;
}
@DevWellington
Copy link
Author

// sendMessage from array list
var contactList = ['Meu Tim','Meu Claro','Meu Vivo','Meu Teste1','Meu Teste2','Meu Teste3','Meu Teste4'];
var count = 1;
var interval_search = 10;
var interval_send = 10;
var interval_all = 10;
$.each(contactList.sort(), function(k,contact){

var i = 0;
var timer = setInterval(function(){

    interval_search = interval_all;
    interval_send = interval_search + 20;

    i++;
    if( i == count )
        clearInterval(timer);

    sendMessageToContact(contact,interval_search, interval_send, interval_all);
    console.log(interval_all, " - Iniciado processo do contato: ", contact);

    interval_all = interval_send  + 20;

        console.log(interval_search);
        console.log(interval_send);
        console.log(interval_all);

    console.log(contact, interval_search, interval_send, interval_all);


}, interval_all*1000);

});

console.log("Finishing!");

@hericksonn
Copy link

Oi Wellington,

Não consegui fazer seu código funcionar.

Por exemplo, o comando para iniciar pesquisa: $(".icon-chat").click();

Só consegui assim:

function triggerMouseEvent(node, eventType) {
var event = document.createEvent('MouseEvents');
event.initEvent(eventType, true, true);
node.dispatchEvent(event);
}

triggerMouseEvent(document.getElementsByClassName("icon icon-chat")[0], "mousedown");

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