diff --git a/README.md b/README.md index a540f6b..58052f6 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,42 @@ # SendScriptWhatsApp -Código para enviar o Script inteiro de Shrek ou Bee Movie para seus amigos ou grupos do WhatsApp +Código para enviar o Script inteiro de Shrek ou Bee Movie para seus amigos ou grupos do WhatsApp através do console do navegador. -## Utilização +## 🧑‍💻 Tecnologias -Abra [shrekSendScript.js](https://github.com/Matt-Fontes/SendScriptWhatsApp/blob/main/shrekSendScript.js) -Ou -Abra [beeMovieSendScript.js](https://github.com/Matt-Fontes/SendScriptWhatsApp/blob/main/beeMovieSendScript.js) +* JavaScript -Copie todo o conteúdo (clique em raw -> ctrl+a -> ctrl+c) +## 📖 Utilização -No WhatsApp Web abra o console do Browser +1. Abra o [WhatsApp Web](https://web.whatsapp.com) e faça login na sua conta. +2. Abra a conversa para a qual deseja enviar o script e mantenha a caixa de texto selecionada. +3. Abra o **DevTools** (Ferramentas do Desenvolvedor) utilizando um dos atalhos: `Ctrl + Shift + J`, `Ctrl + Shift + I` ou `F12`. +4. No topo da aba que se abriu, clique em **Console**. +5. Escolha e clique em um dos scripts abaixo: + * [Shrek](https://github.com/Matt-Fontes/SendScriptWhatsApp/blob/main/shrekSendScript.js) + * [Bee Movie](https://github.com/Matt-Fontes/SendScriptWhatsApp/blob/main/beeMovieSendScript.js) +6. Copie todo o conteúdo do arquivo (clique em **Raw** -> `Ctrl + A` -> `Ctrl + C`). +7. No console do WhatsApp Web, cole o código. -| ⚠️ Aviso importante, numa atualização recente do Google Chrome, está sendo impedido que qualquer script seja colado no Console.| -|--| -| ***Para contornar esse problema, o console do desenvolvedor espera receber um confirmação textual escrevendo no console: "allow pasting"***| -|Após isso será permitido colar e continuar a execução do script| +> 📍 [!IMPORTANT] +> Em atualizações recentes do Google Chrome, pode ser impedido que scripts sejam colados no Console. Para contornar isso, digite `allow pasting` no console e aperte Enter antes de colar o script. +8. Após colar o script, aperte **Enter** para iniciar a execução. -Cole o código no console e aperte Enter +## ⚠️ Atenção -Pronto +Esta ação é **irreversível**. Uma vez iniciado, o script enviará todas as linhas do roteiro automaticamente. + +## 🧑‍💼 Contribuidores + +* [Matt-Fontes](https://github.com/Matt-Fontes) (Criador) +* [P0sseid0n](https://github.com/P0sseid0n) +* [Alphka](https://github.com/Alphka) +* [Bulani](https://github.com/Bulani) +* [WillFelisberto](https://github.com/WillFelisberto) +* [silvan-batistella](https://github.com/silvan-batistella) +* [Samyr](https://github.com/Samyr-Dev) (Eu) + +## 📱 Contato + +[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/samyrtertuliano) diff --git a/shrekSendScript.js b/shrekSendScript.js index ff005de..db8e21e 100644 --- a/shrekSendScript.js +++ b/shrekSendScript.js @@ -1,25 +1,39 @@ async function enviarScript(scriptText){ - const lines = scriptText.split(/[\n\t]+/).map(line => line.trim()).filter(line => line); - main = document.querySelector("#main"), - textarea = main.querySelector(`div[contenteditable="true"]`) - - if(!textarea) throw new Error("Não há uma conversa aberta") - - for(const line of lines){ - console.log(line) - - textarea.focus(); - document.execCommand('insertText', false, line); - textarea.dispatchEvent(new Event('change', {bubbles: true})); - - setTimeout(() => { - (main.querySelector(`[data-testid="send"]`) || main.querySelector(`[data-icon="send"]`)).click(); - }, 100); - - if(lines.indexOf(line) !== lines.length - 1) await new Promise(resolve => setTimeout(resolve, 250)); - } - - return lines.length; + const lines = scriptText.split(/[\n\t]+/).map(line => line.trim()).filter(line => line); + const main = document.querySelector("#main"); + const textarea = main ? main.querySelector(`div[contenteditable="true"]`) : null; + + if(!textarea) throw new Error("Não há uma conversa aberta! Clique em uma conversa antes de rodar o script."); + + for(const line of lines){ + console.log("Enviando linha:", line); + + textarea.focus(); + document.execCommand('insertText', false, line); + + textarea.dispatchEvent(new Event('input', {bubbles: true})); + + await new Promise(resolve => setTimeout(resolve, 250)); + + const sendBtn = main.querySelector('span[data-testid="wds-ic-send-filled"]') || + main.querySelector('span[data-icon="wds-ic-send-filled"]') || + main.querySelector('span[data-testid="send"]') || + main.querySelector('span[data-icon="send"]') || + main.querySelector('button:has(span[data-icon="send"])'); + + if (sendBtn) { + sendBtn.click(); + } else { + console.error("Botão de enviar não encontrado. O seletor pode ter mudado."); + break; + } + + if(lines.indexOf(line) !== lines.length - 1) { + await new Promise(resolve => setTimeout(resolve, 1000)); + } + } + + return lines.length; } enviarScript(`