0% acharam este documento útil (0 voto)
2 visualizações3 páginas

Coletor de Respostas WhatsApp com JS

Enviado por

stellaheavengaze
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações3 páginas

Coletor de Respostas WhatsApp com JS

Enviado por

stellaheavengaze
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

const { Client, LocalAuth } = require("whatsapp-web.

js");
const qrcode = require("qrcode-terminal");
const fs = require("fs");
const path = require("path");

const PASTA_IMAGENS = "./imagens/";


const ARQUIVO_RELATORIO = "./[Link]";
const ATRASO_RESPOSTA = 60000;

if (![Link](PASTA_IMAGENS)) {
[Link](PASTA_IMAGENS);
}

const atraso = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

const embaralharArray = (array) => {


for (let i = [Link] - 1; i > 0; i--) {
const j = [Link]([Link]() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
};

const salvarRelatorio = (dados) => {


[Link](ARQUIVO_RELATORIO, [Link](dados, null, 2), "utf-8");
[Link](`relatorio salvo em: ${ARQUIVO_RELATORIO}`);
};

const salvarImagem = (mensagem) => {


return new Promise((resolve, reject) => {
const nomeArquivo = `imagem_${[Link]()}.jpg`;
const caminhoArquivo = [Link](PASTA_IMAGENS, nomeArquivo);

[Link]().then((media) => {
if (!media) return reject(new Error("falha ao baixar a midia"));

[Link](caminhoArquivo, [Link], "base64", (erro) => {


if (erro) return reject(erro);
resolve({ caminhoArquivo, texto: [Link] || null });
});
});
});
};

const coletarRespostas = async (cliente, idChat) => {


const respostas = [];
const tempoLimite = atraso(ATRASO_RESPOSTA);

const listener = async (mensagem) => {


if ([Link] === idChat) {
if ([Link] === "chat") {
[Link]({ tipo: "texto", conteudo: [Link] });
} else if ([Link] === "image") {
try {
const imagem = await salvarImagem(mensagem);
[Link]({ tipo: "imagem", conteudo: [Link], texto:
[Link] });
} catch (erro) {
[Link]("Erro ao salvar imagem:", erro);
}
}
}
};

[Link]("message", listener);
await tempoLimite;
[Link]("message", listener);

return respostas;
};

const fazerPerguntas = async (cliente, chat, perguntas) => {


const relatorio = [];
const tempoLimitePerguntas = atraso(ATRASO_RESPOSTA);
embaralharArray(perguntas);

const tempoInicio = [Link]();


let tempoPerguntaAnterior = tempoInicio;

for (const pergunta of perguntas) {


const tempoInicioPergunta = [Link]();

try {
await [Link]([Link]._serialized, pergunta);
[Link](`Pergunta enviada: "${pergunta}"`);

const respostas = await coletarRespostas(cliente, [Link]._serialized);


[Link](`Respostas recebidas para "${pergunta}":`, respostas);

[Link]({ pergunta, respostas });

const tempoFimPergunta = [Link]();


const duracaoPergunta = tempoFimPergunta - tempoInicioPergunta;
[Link](`Tempo para pergunta: ${duracaoPergunta}ms`);

const tempoDesdeUltimaPergunta = tempoInicioPergunta - tempoPerguntaAnterior;


[Link](`Tempo desde última pergunta: ${tempoDesdeUltimaPergunta}ms`);

tempoPerguntaAnterior = tempoInicioPergunta;
} catch (erro) {
[Link](`Erro com a pergunta "${pergunta}":`, erro);
[Link]({ pergunta, respostas: [{ tipo: "texto", conteudo: "Erro ao
coletar respostas" }] });
}

await tempoLimitePerguntas;
}

const tempoFim = [Link]();


const duracaoTotal = tempoFim - tempoInicio;
[Link](`Tempo total: ${duracaoTotal}ms`);

salvarRelatorio(relatorio);
};

const cliente = new Client({ authStrategy: new LocalAuth() });

[Link]("qr", (qr) => {


[Link](qr, { small: true });
});

[Link]("ready", async () => {


[Link]("cliente pronto!");

setTimeout(async () => {
try {
const chats = await [Link]();
const numeroTedi = "5511935025295";
const chatTedi = [Link]((chat) => [Link]._serialized === `$
{numeroTedi}@[Link]`);

if (chatTedi) {
const perguntas = [
"Quais são os ingredientes de uma pizza Margherita?",
"Como faço um bolo de chocolate?",
"Qual a receita para spaghetti aglio e olio?",
"Qual a melhor forma de cozinhar salmão?",
"Como faço uma lasanha vegetariana?",
"Qual a receita para fazer pão caseiro?",
"Como preparo um risoto de camarão?",
"Quais os ingredientes de uma feijoada completa?",
"Como faço um estrogonofe de frango?",
"Qual a receita de um smoothie de frutas tropicais?",
];

await fazerPerguntas(cliente, chatTedi, perguntas);


} else {
[Link]("chat com o Tedi não encontrado");
}
} catch (erro) {
[Link]("erro ao buscar chats:", erro);
}
}, 5000);
});

[Link]();

Você também pode gostar