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);
}
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]();