Skip to content

Instantly share code, notes, and snippets.

@callmeloureiro
Last active June 5, 2021 13:29
Show Gist options
  • Star 65 You must be signed in to star a gist
  • Fork 31 You must be signed in to fork a gist
  • Save callmeloureiro/aee312dc9e2bffd59313988ec4a70928 to your computer and use it in GitHub Desktop.
Save callmeloureiro/aee312dc9e2bffd59313988ec4a70928 to your computer and use it in GitHub Desktop.
Como não deixar no vácuo no whatsapp
/*
Hoje não deixaremos mais ninguém no vácuo no whatsapp
Para utilizar:
- Abra o web.whatsapp.com;
- Abra o console e cole o código que está no gist;
- Aguarde e verá uma mensagem sendo enviada a cada momento que alguém te enviar alguma mensagem.
Confira também como ser chato no whatsapp: https://gist.github.com/mathloureiro/4c74d60f051ed59650cc76d1da0d32da
e como ser chato no mensseger: https://gist.github.com/mathloureiro/d3f91d19cf148838217e42a0c6df5ed8
*/
// Declaração de variáveis utilizadas
// Mensagem que será enviada
var setTextContent = "Oi! Você está falando com o *LOU COMPUTADOR*, o computador do Loureiro! Infelizmente ele não se encontra no momento, mas assim que possível ele irá responder você :D";
var i;
var group;
var conversas;
var lastMessage;
var eventVar;
var textbox;
function simulateMouseEvents(element, eventName) {
var mouseEvent = document.createEvent ('MouseEvents');
mouseEvent.initEvent (eventName, true, true);
element.dispatchEvent (mouseEvent);
}
i = setInterval(() => {
conversas = document.querySelectorAll('.chat.unread');
conversas.forEach((div) => {
group = div.querySelector('.chat-body .chat-secondary .chat-status span._2_LEW span.sender')
if (!group) {
simulateMouseEvents(div, 'mousedown')
setTimeout(() => {
lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
if ( lastMessage.classList.contains('message-in') ) {
window.InputEvent = window.Event || window.InputEvent;
eventVar = new InputEvent('input', {
bubbles: true
});
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');
textbox.textContent = setTextContent;
textbox.dispatchEvent(eventVar);
document.querySelector("button.compose-btn-send").click();
}
}, 1000);
}
})
}, 2000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
@leojaimesson
Copy link

Muito bom! <3

@tdsereno
Copy link

Muito bom, parabéns!

@george124816
Copy link

Foda demais, extremamente util

@leandrow
Copy link

Kkkkkkkkkk

@omurilo
Copy link

omurilo commented Oct 21, 2017

Tentei colocar em bookmarklets mas não deu muito certo, não to percebendo o erro.

javascript:(function(){()

var setTextContent = "Oi! Infelizmente ele não se encontra no momento, mas assim que possível ele irá responder você, Att. O Computador :D";

function simulateMouseEvents(element, eventName) {
  var mouseEvent = document.createEvent ('MouseEvents');
  mouseEvent.initEvent (eventName, true, true);
  element.dispatchEvent (mouseEvent);
}

window.autoresponder = setInterval(() => {
	var conversas = document.querySelectorAll('.chat.unread');
	conversas.forEach((div) => {
		var group = div.querySelector('.chat-body .chat-secondary .chat-status span._2_LEW span.sender')
		var isMuted = div.querySelector('.chat-body .chat-secondary .chat-meta > span div > span[data-icon=muted]');
		
		if (!group && !isMuted) {
			simulateMouseEvents(div, 'mousedown')
			setTimeout(() => {
				var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
				if ( lastMessage.classList.contains('message-in') ) {
					window.InputEvent = window.Event || window.InputEvent;
					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');
					textbox.textContent = setTextContent;
					textbox.dispatchEvent(event);
					document.querySelector("button.compose-btn-send").click();
				}
			}, 1000);
		}
	})
}, 2000); // 1000 = 1 segundo, tempo que será enviada cada mensagem.
})()

@SauloSilva
Copy link

SauloSilva commented Oct 21, 2017

foda!

Customizei para o uso próprio, e vou compartilhar o code, so tome cuidado com o nome que esta usando para os seus contatos
kkkk

/*
Hoje não deixaremos mais ninguém no vácuo no whatsapp
Para utilizar:
- Abra o web.whatsapp.com;
- Abra o console e cole o código que está no gist;
- Aguarde e verá uma mensagem sendo enviada a cada momento que alguém te enviar alguma mensagem.
Confira também como ser chato no whatsapp: https://gist.github.com/mathloureiro/4c74d60f051ed59650cc76d1da0d32da
e como ser chato no mensseger: https://gist.github.com/mathloureiro/d3f91d19cf148838217e42a0c6df5ed8
*/

// Mensagem que será enviada de acordo com as etapas que você definiu

function setTextContent(contactName) {
  if (working()) {
    // mensagem para quando estiver workando 
    return "Oi " + contactName + "! Infelizmente ele não esta com o celular. Ele esta trabalhando e o chefe dele é muito chato e não deixa ele responder o zapzap em horário de serviço =( Mas assim que possível ele irá responder você :D";
  } else if (sleeping()) {
    // mensagem para quando estiver tirando uma soneca
    return "Oi " + contactName +  "! Infelizmente ele esta dormindo, mas assim que acordar ele irá te responder";
  } else {
    // mensagem para dar aquele migué mesmo
    return "Oi " + contactName + "! Infelizmente ele não esta com o celular no momento, mas assim que possível ele irá responder você :D";
  }
}

var i;
var chat = document.querySelectorAll('.chat.unread');

function day() {
  var date = new Date();
  return date.getDay();
}

function hour() {
  var date = new Date();
  return date.getHours();
}

// defina a hora do trabalho
function working() {
  return day() > 0 && day() < 6 && hour() >= 9 && hour() <= 18;
}

// defina a hora do cochilo
function sleeping() {
  return hour() >= 0 && hour() <= 8;
}

function simulateMouseEvents(element, eventName) {
  var mouseEvent = document.createEvent ('MouseEvents');
  mouseEvent.initEvent (eventName, true, true);
  element.dispatchEvent (mouseEvent);
}

function parserContactName(contactName) {
  if (!contactName.match(/[a-zA-Z]/g)) {
    return '';
  } else {
    return contactName;
  }
};

i = setInterval(() => {
  chat.forEach((div) => {
    var group = div.querySelector('.chat-body .chat-secondary .chat-status span._2_LEW span.sender')
    var mutedChat = div.querySelector('.chat-body .chat-secondary .chat-meta > span div > span[data-icon=muted]');
    
    if (!group && !mutedChat) {
      simulateMouseEvents(div, 'mousedown')

      setTimeout(() => {
        var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
        if ( lastMessage.classList.contains('message-in') ) {
          window.InputEvent = window.Event || window.InputEvent;

          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');
          var contactName = parserContactName(div.querySelector('.chat-body .chat-title .emojitext').innerText);

          textbox.textContent = setTextContent(contactName);
          textbox.dispatchEvent(event);
          
          document.querySelector("button.compose-btn-send").click();
        }
      }, 1000);
    }
  })
}, 2000); 

@omurilo
Copy link

omurilo commented Oct 26, 2017

Quem quiser colocar o script em bookmarklet (link na barra de favoritos) pra automatizar o uso, pode fazer dessa maneira:
créditos ao @russiann

/* Script do @mathloureiro - modificado! */
javascript:(function(){
var setTextContent = "Oi! Você está falando com o *O COMPUTADOR*, o computador do Murilo! Infelizmente ele não se encontra no momento, mas assim que possível ele irá responder você :D";

function simulateMouseEvents(element, eventName) {
  var mouseEvent = document.createEvent ('MouseEvents');
  mouseEvent.initEvent (eventName, true, true);
  element.dispatchEvent (mouseEvent);
}

window.zoeira = setInterval(function(){
	var conversas = document.querySelectorAll('.chat.unread').forEach(function(div) {
		var group = div.querySelector('.chat-body .chat-secondary .chat-status span._2_LEW span.sender')
		var isMuted = div.querySelector('.chat-body .chat-secondary .chat-meta > span div > span[data-icon=muted]');
		
		if (!group && !isMuted) {
			simulateMouseEvents(div, 'mousedown')
			setTimeout(() => {
				var lastMessage = document.querySelector('#main > .pane-body > .copyable-area > .pane-chat-msgs .msg:last-child > .message');
				if ( lastMessage.classList.contains('message-in') ) {
					window.InputEvent = window.Event || window.InputEvent;
					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');
					textbox.textContent = setTextContent;
					textbox.dispatchEvent(event);
					document.querySelector("button.compose-btn-send").click();
				}
			}, 1000);
		};
	});
}, 10000);
})()

Para terminar a execução, só é necessário ter um outro bookmarklet assim:

javascript:(function(){[
	clearInterval(window.zoeira); 
	console.log("Evento foi parado.");
})()

@troblou
Copy link

troblou commented Jan 20, 2018

galera, o codigo acima esta apresentando um erro...

VM4100:19 Uncaught TypeError: Cannot read property 'classList' of null
at setTimeout (:19:22)

alguem tem esse codigo funcionando ?
estou desenvolvendo um aplicativo desktop para melhorar o uso, e queria apllicar o auto responder... para que possa ficar mais automatico ainda.

se quiserem participar comigo, segue meu email brunoazevedo.df@gmail.com

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