Skip to content

Update 04/2026 #126

Description

@santosalessandrocesar

async function enviarScript(scriptText) {
const lines = scriptText.split(/[\n\t]+/).map(line => line.trim()).filter(line => line);
const main = document.querySelector("#main");
const textarea = main.querySelector(div[contenteditable="true"]);

if (!textarea) throw new Error("Não há uma conversa aberta ou o seletor mudou.");

for (const line of lines) {
    console.log(`Enviando: ${line}`);
    
    textarea.focus();
    
    // Insere o texto simulando digitação real
    const data = new DataTransfer();
    data.setData('text/plain', line);
    textarea.dispatchEvent(new ClipboardEvent('paste', {
        clipboardData: data,
        bubbles: true
    }));

    // Pequena pausa para o WhatsApp processar o texto e mostrar o botão de enviar
    await new Promise(resolve => setTimeout(resolve, 100));

    const sendBtn = main.querySelector(`span[data-testid="send"]`) || 
                    main.querySelector(`span[data-icon="send"]`) ||
                    main.querySelector(`button[aria-label="Enviar"]`);

    if (sendBtn) {
        sendBtn.click();
    } else {
        // Fallback: Tenta apertar Enter se o botão não for achado
        textarea.dispatchEvent(new KeyboardEvent('keydown', {
            key: 'Enter',
            code: 'Enter',
            bubbles: true
        }));
    }
    
    // Delay entre mensagens para não ser bloqueado por spam rápido demais
    if (lines.indexOf(line) !== lines.length - 1) {
        await new Promise(resolve => setTimeout(resolve, 500)); 
    }
}

return lines.length;

}

// Para rodar, cole a função acima e depois chame ela:
enviarScript(YOUR TEXT HERE)
.then(e => console.log(Sucesso! ${e} mensagens enviadas.))
.catch(console.error);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions