Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 62 additions & 24 deletions shrekSendScript.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,57 @@
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;
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");

for (let i = 0; i < lines.length; i++) {
const line = lines[i];
console.log(line);

// insere o texto
textarea.focus();
document.execCommand("insertText", false, line);
// alguns apps reagem melhor a 'input' do que a 'change'
textarea.dispatchEvent(new Event("input", { bubbles: true }));

// simula “Enter”
const enterDown = new KeyboardEvent("keydown", {
bubbles: true,
cancelable: true,
key: "Enter",
code: "Enter",
which: 13,
keyCode: 13,
});
textarea.dispatchEvent(enterDown);

const enterUp = new KeyboardEvent("keyup", {
bubbles: true,
cancelable: true,
key: "Enter",
code: "Enter",
which: 13,
keyCode: 13,
});
textarea.dispatchEvent(enterUp);

// intervalo entre linhas
if (i < lines.length - 1) {
await new Promise(res => setTimeout(res, 250));
}
}

return lines.length;
}

enviarScript(`

const minhasLinhas = `
Olá, tudo bem?

SHREK

Written by
Expand Down Expand Up @@ -3700,4 +3729,13 @@ black) Oh, that's funny. Oh. Oh. I can't
breathe. I can't breathe.

THE END
`).then(e => console.log(`Código finalizado, ${e} mensagens enviadas`)).catch(console.error)
`;

(async () => {
try {
const total = await enviarScript(minhasLinhas);
console.log(`✅ Enviou ${total} mensagens com sucesso!`);
} catch (err) {
console.error("❌ Falhou ao enviar:", err);
}
})();