-
-
Save callmeloureiro/4c74d60f051ed59650cc76d1da0d32da to your computer and use it in GitHub Desktop.
/* | |
Hoje iremos MUDAR a vida da pessoa que não te responde no whatsappp... | |
Que tal enviar mensagens pra ela até obter uma resposta?! | |
Sensacional não acha?! Mas, somos devs, correto?! Então vamos automatizar esse paranauê! | |
Para utilizar: | |
- Abra o web.whatsapp.com; | |
- Selecione a conversa que você quer; | |
- Abra o console e cole o código que está no gist; | |
- Aguarde e verá uma mensagem sendo enviada a cada segundo até obter uma mensagem de retorno ou atingir o limite de mensagens. | |
Use com responsabilidade e moderação... O intuito é arrancar um riso ;) | |
*/ | |
var counter = 0; | |
// Limite de mensagens | |
// Se quiser enviar sem limites da zueira (porque the zuera never ends), basta modificar o valor para 0. | |
var limit = 100; | |
// Mensagem que será enviada | |
var textToSend = "Me responde!"; | |
var i = setInterval(function() { | |
window.InputEvent = window.Event || window.InputEvent; | |
var d = new Date(); | |
var event = new InputEvent('input', { | |
bubbles: true | |
}); | |
var textbox = document.querySelector('#main > footer > div.block-compose > div.input-container > div.pluggable-input.pluggable-input-compose > div.pluggable-input-body.copyable-text.selectable-text'); | |
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço. | |
if ( counter > 0 ) { | |
var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message'); | |
if ( lastMessage.classList.contains('message-in') ) { | |
textToSend = "Finalmente respondeu!"; | |
clearInterval(i); | |
} | |
} | |
textbox.textContent = textToSend; | |
textbox.dispatchEvent(event); | |
document.querySelector("button.compose-btn-send").click(); | |
counter++; | |
if (counter === limit && limit !== 0) | |
clearInterval(i); | |
console.log("Já enviei " + counter + ' mensagens.') | |
}, 1000); // 1000 = 1 segundo, tempo que será enviada cada mensagem. |
@murilokaos nem, querendo mandar um middlefinger mesmo hahaha
mas galera, eu consegui implementar com mention aqui:
var counter = 0;
var limit = 1;
//embaixo você seta o número que está cadastrado no whatsapp da pessoa - para validar, eu fui no próprio whatsapp web, usei o mention (sem mandar a mensagem) e inspecionei (formato de número padrão: País + DDD + número: 554199999999)
var textToSend = 'Mensagem normal usando mention do <span data-mention-jid="[email protected]" contenteditable="false"><span class="at-symbol">@</span><span dir="ltr"></span></span> aqui';
var i = setInterval(function() {
window.InputEvent = window.Event || window.InputEvent;
var d = new Date();
var event = new InputEvent('input', {
bubbles: true
});
var textbox = document.querySelector('#main > footer > div.block-compose > div.input-container > div.pluggable-input.pluggable-input-compose > div.pluggable-input-body.copyable-text.selectable-text');
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
if ( lastMessage.classList.contains('message-in') ) {
textToSend = "Mensagem caso respondam!";
clearInterval(i);
}
}
// Aqui mudei para innerHTML
textbox.innerHTML = textToSend;
// textbox.textContent = textToSend;
textbox.dispatchEvent(event);
document.querySelector("button.compose-btn-send").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.')
}, 1000);
Implementei mais uma coisinha aqui: hahahaha só parar quando a pessoa dizer o que você quer:
var counter = 0;
var limit = 0;
var textToSend = 'Diga MEU MESTRE para eu parar :)';
var i = setInterval(function() {
window.InputEvent = window.Event || window.InputEvent;
var d = new Date();
var event = new InputEvent('input', {
bubbles: true
});
var textbox = document.querySelector('#main > footer > div.block-compose > div.input-container > div.pluggable-input.pluggable-input-compose > div.pluggable-input-body.copyable-text.selectable-text');
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
if ( lastMessage.classList.contains('message-in') ) {
// Aqui eu valido se a última mensagem é a esperada :)
if(document.querySelector("#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message .bubble-text .message-text span").textContent == 'MEU MESTRE'){
textToSend = "Eu sei que sou seu mestre, hahaha!";
clearInterval(i);
}
}
}
// Aqui mudei para innerHTML
textbox.innerHTML = textToSend;
// textbox.textContent = textToSend;
textbox.dispatchEvent(event);
document.querySelector("button.compose-btn-send").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.')
}, 1000);
Rindo rios aqui com isso... sensacional!!!!! =)
@JulianoF Conseguiu enviar imagem? Já tentei aqui e nada...
@avitorio HUMMMM, challenge accepted
alguém já conseguiu mandar imagens?? também tentei aqui e nada xD
@avitorio @simonardejr nada :/ @mathloureiro hahah eaí?
// Atualização 31/01/2018
var counter = 0;
var limit = 0;
var textToSend = 'Diga MEU MESTRE para eu parar :)';
var i = setInterval(function() {
window.InputEvent = window.Event || window.InputEvent;
var d = new Date();
var event = new InputEvent('input', {
bubbles: true
});
var textbox = document.querySelector('#main > footer > div.block-compose > div.input-container > div.pluggable-input.pluggable-input-compose > div.pluggable-input-body.copyable-text.selectable-text');
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('.copyable-area > .pane-chat-msgs .msg:last-child > .message');
if ( lastMessage.classList.contains('message-in') ) {
// Aqui eu valido se a última mensagem é a esperada :)
if(document.querySelector(".msg:last-child .message > div > div > .copyable-text > div > span").textContent == 'RAFA, MEU MESTRE'){
textToSend = "Eu sei que sou seu mestre, hahaha!";
clearInterval(i);
}
}
}
// Aqui mudei para innerHTML
textbox.innerHTML = textToSend;
// textbox.textContent = textToSend;
textbox.dispatchEvent(event);
document.querySelector("button.compose-btn-send").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.');
}, 1000);
É, não deve estar funcionando mais
estou encontrando o seguinte erro ao jogar o código no console:
Uncaught TypeError: Cannot set property 'textContent' of null
at :40:22
Alguém mais com o mesmo problema?
Sim!
Estou com msm error.
send = function(msg) {
var textbox = document.querySelector('._2S1VP')
var textToSend = msg
textbox.textContent = textToSend;
var event = new InputEvent('input', {
bubbles: true
});
textbox.dispatchEvent(event);
document.querySelector("button._2lkdt").click();
}
// send('hi');
Gostei muito da ideia, fiz um update funcional, Vlw Galera ;)
const WhatsApp = (parameters) => {
var start = parameters.messageStart,
stop = parameters.messageStop,
time = parameters.messageTime,
limit = parameters.messageLimit,
counter = 0;
var textToSend = start;
let interval = setInterval(() => {
window.InputEvent = window.Event || window.InputEvent;
let date = new Date();
let event = new InputEvent("input",{ bubbles: true });
let textBox = document.querySelector("._2S1VP");
if(counter > 0){
if(document.querySelector("#main > div:nth-child(3) > div:nth-child(2) > div:nth-child(3) > div:nth-child(2) > div:last-child > div:nth-child(2)") != null){
if (document.querySelector("#main > div:nth-child(3) > div:nth-child(2) > div:nth-child(3) > div:nth-child(2) > div:last-child > div:nth-child(2)").classList.contains("message-in")){
textToSend = stop;
clearInterval(interval);
}
}
if(document.querySelector("#main > div:nth-child(3) > div:nth-child(2) > div:nth-child(3) > div:nth-child(3) > div:last-child > div:nth-child(2)") != null){
if (document.querySelector("#main > div:nth-child(3) > div:nth-child(2) > div:nth-child(3) > div:nth-child(3) > div:last-child > div:nth-child(2)").classList.contains("message-in")){
textToSend = stop;
clearInterval(interval);
}
}
}
textBox.textContent = textToSend;
textBox.dispatchEvent(event);
document.querySelector("button._2lkdt").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(interval);
console.log("Já enviei " + counter + " mensagens.")
}, time);
}
WhatsApp({
messageStart: "Me Responde!",
messageStop: "Obrigado por me responder!",
messageTime: 1000,
messageLimit: 100
});
Não deixe essa pérola morrer. Funcionando em 12/04/18
var counter = 0;
// Limite de mensagens
// Se quiser enviar sem limites da zueira (porque the zuera never ends), basta modificar o valor para 0.
var limit = 100;
// Mensagem que será enviada
var textToSend = "Me responde!";
var i = setInterval(function() {
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main ._3zJZ2 .copyable-area ._2nmDZ ._9tCEa .vW7d1:last-child ._3_7SH');
if ( lastMessage.classList.contains('message-in') ) {
textToSend = "Finalmente respondeu!";
clearInterval(i);
}
}
var textbox = document.querySelector('._2S1VP');
textbox.textContent = textToSend;
var event = new InputEvent('input', {
bubbles: true
});
textbox.dispatchEvent(event);
document.querySelector("button._2lkdt").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.')
}, 1000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
olá boa tarde Gostaria de saber como faz para rodar o zap bot? pois nao conseguir
Quero usar ela pra responder mensagem automática no whatzaap da empresa na qual eu trabalho.
@JGAndrey acho que esse seria melhor para usar https://gist.github.com/mathloureiro/aee312dc9e2bffd59313988ec4a70928
att 22/11/18
var counter = 0;
// Limite de mensagens
// Se quiser enviar sem limites da zueira (porque the zuera never ends), basta modificar o valor para 0.
var limit = 100;
// Mensagem que será enviada
var textToSend = "Me responde!";
var i = setInterval(function() {
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main ._3zJZ2 .copyable-area ._2nmDZ ._9tCEa .vW7d1:last-child ._3_7SH');
if ( lastMessage.classList.contains('message-in') ) {
textToSend = "Finalmente respondeu!";
clearInterval(i);
}
}
var textbox = document.querySelector('._2S1VP');
textbox.textContent = textToSend;
var event = new InputEvent('input', {
bubbles: true
});
textbox.dispatchEvent(event);
document.querySelector("button._35EW6").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.')
}, 1000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
att 22/11/18
var counter = 0;
// Limite de mensagens
// Se quiser enviar sem limites da zueira (porque the zuera never ends), basta modificar o valor para 0.
var limit = 100;// Mensagem que será enviada
var textToSend = "Me responde!";var i = setInterval(function() {
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço. if ( counter > 0 ) { var lastMessage = document.querySelector('#main ._3zJZ2 .copyable-area ._2nmDZ ._9tCEa .vW7d1:last-child ._3_7SH'); if ( lastMessage.classList.contains('message-in') ) { textToSend = "Finalmente respondeu!"; clearInterval(i); } } var textbox = document.querySelector('._2S1VP'); textbox.textContent = textToSend; var event = new InputEvent('input', { bubbles: true }); textbox.dispatchEvent(event); document.querySelector("button._35EW6").click(); counter++; if (counter === limit && limit !== 0) clearInterval(i); console.log("Já enviei " + counter + ' mensagens.')
}, 1000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
boa, funcionando em 10/05/2019
Só para se responderem o que você quer:
var counter = 0;
// Limite de mensagens
// Se quiser enviar sem limites da zueira (porque the zuera never ends), basta modificar o valor para 0.
var limit = 0;
// Mensagem que será enviada
var textToSend = 'Só paro se mandar '"você manda em mim"';
var textToCompare = "você manda em mim";
var i = setInterval(function() {
// O envio para quando a pessoa responde, caso queira remover, basta apagar essa condiço.
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main ._3zJZ2 .copyable-area ._2nmDZ ._9tCEa .vW7d1:last-child ._3_7SH');
if ( lastMessage.classList.contains('message-in') ) {
var mensagemRetorno = document.querySelector('#main ._3zJZ2 .copyable-area ._2nmDZ ._9tCEa .vW7d1:last-child ._3_7SH .selectable-text').innerText;
if(mensagemRetorno == textToCompare){
textToSend = ":-)";
clearInterval(i);
}
}
}
var textbox = document.querySelector('._2S1VP');
textbox.textContent = textToSend;
var event = new InputEvent('input', {
bubbles: true
});
textbox.dispatchEvent(event);
document.querySelector("button._35EW6").click();
counter++;
if (counter === limit && limit !== 0)
clearInterval(i);
console.log("Já enviei " + counter + ' mensagens.')
}, 1000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
Funcionando!
// Limite = 0, manda até o cara dizer "a"
var limit = 100;
//mensagem a ser enviada
var textToSend = 'Fala um "a" pra você ver';
//Palavra chave para parar o envio
var textToCompare = "a";
// Resposta enviada ao acertar a pavra chave
var resposta = "Cara Esperto!";
var counter = 0;
var i = setInterval(function() {
if ( counter > 0 ) {
var lastMessage = document.querySelector('#main ._1_q7u .copyable-area ._1_keJ ._1ays2 .FTBzM:last-child ._1zGQT');
if ( lastMessage.classList.contains('message-in') ) {
var mensagemRetorno = document.querySelector('#main ._1_q7u .copyable-area ._1_keJ ._1ays2 .FTBzM:last-child ._1zGQT .-N6Gq .copyable-text ._12pGw .selectable-text').innerText;
if(mensagemRetorno == textToCompare){
textToSend = resposta;
clearInterval(i);
}
}
}
var textbox = document.querySelector('._3u328');
textbox.textContent = textToSend;
var event = new InputEvent('input', {
bubbles: true
});
textbox.dispatchEvent(event);
document.querySelector("button._3M-N-").click();
counter++;
if (counter === limit && limit !== 0){
clearInterval(i);
}
console.log("Já enviei " + counter + ' mensagens.')
}, 3000);// tempo entre cada mensagem em milisegundos
Galera, alguém já pensou em modificar para marcar alguém em um grupo? Eu o @encinecarlos estamos com uma missão pra "perturbar" um membro do nosso grupo e isso seria interessante.
Olhando o HTML, não faço a menor ideia de como implementar hehehe... se alguém tiver uma ideia de como fazer, manda aqui ou via DM no Twitter (_carvalho_leo) ou Telegram (@carvalho_leo). Valeuuuuuu
colo o código aonde?
Galera, alguém já pensou em modificar para marcar alguém em um grupo? Eu o @encinecarlos estamos com uma missão pra "perturbar" um membro do nosso grupo e isso seria interessante.
Olhando o HTML, não faço a menor ideia de como implementar hehehe... se alguém tiver uma ideia de como fazer, manda aqui ou via DM no Twitter (_carvalho_leo) ou Telegram (@carvalho_leo). Valeuuuuuu
lá para cima tem um exemplo de mention que fiz. funciona até em conversa 1x1
nenhum desses codigos funciona, fica dando Uncaught TypeError: Cannot set property 'textContent' of null
Nenhum destes códigos estão funcionando, alguém sabe o porque?
OIha o @JulyanoF querendo enviar o negão do wpp pra todo mundo.