COMUNIDADE ZDG

EMAIL

LINKS

PASSO A PASSO

BOTZDG + EMAIL


1- INSTALAR GIT E NODE
2- INSTALAR A API
a. criar pasta e arquivos
b. npm install
c. configurar acesso do email
d. node botzdg_email.js

.ENV

				
					# CREDENCIAIS GMAIL
EMAIL_SERVICE=gmail
EMAIL_USER=zapdasgalaxias@gmail.com
EMAIL_PASS=nb
				
			

PACKAGE.JSON

				
					{"name":"bot-zdg","version":"1.0.0","description":"bot-zdg: based on Whatsapp API","main":"app.js","scripts":{"start":"node .\botzdg_typebot_stop.js","start:dev":"nodemon app.js","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["whatsapp-api","node.js"],"author":"Pedro","license":"MIT","dependencies":{"axios":"^1.5.0","dotenv":"^16.0.3","express":"^4.17.1","express-fileupload":"^1.2.0","express-validator":"^6.9.2","http":"0.0.1-security","moment-timezone":"^0.5.43","nodemailer":"^6.9.5","qrcode":"^1.4.4","qrcode-terminal":"^0.12.0","socket.io":"2.3.0","whatsapp-web.js":"https:\/\/github.com\/Julzk\/whatsapp-web.js\/tarball\/jkr_hotfix_7"},"devDependencies":{"nodemon":"^2.0.19"}}
				
			

INDEX.HTML

				
					<!DOCTYPE html>
<html>
<head>
	<title>WPP API by Pedrinho da NASA</title>
</head>
<body>

	<div id="app">
		<h1>WPP API</h1>
		<h3>Entre agora para comunidade ZDG: <a href="https://comunidaedzdg.com.br/">clique aqui</a></h3>
		<p>ZDG MOD</p>
		<img decoding="async" src="" alt="QR Code" id="qrcode">
		<h3>Logs:</h3>
		<ul class="logs"></ul>
	</div>

	<script type="rocketlazyloadscript" data-minify="1" src="https://comunidadezdg.com.br/wp-content/cache/min/1/ajax/libs/jquery/3.5.1/jquery.min.js?ver=1739334587" crossorigin="anonymous" defer></script>
	<script type="rocketlazyloadscript" data-minify="1" src="https://comunidadezdg.com.br/wp-content/cache/min/1/ajax/libs/socket.io/2.3.0/socket.io.js?ver=1739334587" crossorigin="anonymous" defer></script>
	<script type="rocketlazyloadscript">window.addEventListener('DOMContentLoaded', function() {
		$(document).ready(function() {
			var socket = io();

			socket.on('message', function(msg) {
				$('.logs').append($('<li>').text(msg));
			});

			socket.on('qr', function(src) {
				$('#qrcode').attr('src', src);
				$('#qrcode').show();
			});

			socket.on('ready', function(data) {
				$('#qrcode').hide();
			});

			socket.on('authenticated', function(data) {
				$('#qrcode').hide();
			});
		});
	});</script>
<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>

				
			

botzdg_email.js

				
					require('dotenv').config({path: __dirname + '/.env'})
const { Client, LocalAuth } = require('whatsapp-web.js');
const express = require('express');
const socketIO = require('socket.io');
const qrcode = require('qrcode');
const http = require('http');
const fileUpload = require('express-fileupload');
const port = 8000;
const app = express();
const server = http.createServer(app);
const io = socketIO(server);
const nodemailer = require('nodemailer');
const moment = require('moment-timezone');

app.use(express.json());
app.use(express.urlencoded({
  extended: true
}));
app.use(fileUpload({
  debug: true
}));
app.use("/", express.static(__dirname + "/"))
app.get('/', (req, res) => {
  res.sendFile('index.html', {
    root: __dirname
  });
});

const client = new Client({
  authStrategy: new LocalAuth({ clientId: 'email' }),
  puppeteer: { headless: true,
    executablePath: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--no-first-run',
      '--no-zygote',
      '--single-process', // <- this one doesn't works in Windows
      '--disable-gpu'
    ] }
});

client.initialize();

io.on('connection', function(socket) {
  socket.emit('message', '© BOT-ZDG - Iniciado');
  socket.emit('qr', './icon.svg');

client.on('qr', (qr) => {
    console.log('QR RECEIVED', qr);
    qrcode.toDataURL(qr, (err, url) => {
      socket.emit('qr', url);
      socket.emit('message', '© BOT-ZDG QRCode recebido, aponte a câmera  seu celular!');
    });
});

client.on('ready', async () => {
    socket.emit('ready', '© BOT-ZDG Dispositivo pronto!');
    socket.emit('message', '© BOT-ZDG Dispositivo pronto!');
    socket.emit('qr', './check.svg')	
    console.log('© BOT-ZDG Dispositivo pronto');
});

client.on('authenticated', () => {
    socket.emit('authenticated', '© BOT-ZDG Autenticado!');
    socket.emit('message', '© BOT-ZDG Autenticado!');
    console.log('© BOT-ZDG Autenticado');
});

client.on('auth_failure', function() {
    socket.emit('message', '© BOT-ZDG Falha na autenticação, reiniciando...');
    console.error('© BOT-ZDG Falha na autenticação');
});

client.on('change_state', state => {
  console.log('© BOT-ZDG Status de conexão: ', state );
});

client.on('disconnected', (reason) => {
  socket.emit('message', '© BOT-ZDG Cliente desconectado!');
  console.log('© BOT-ZDG Cliente desconectado', reason);
  client.initialize();
});
});

const SendEmail = (async ({zdgSubject, zdgText, zdgFileName, zdgContent, zdgTo}) => {
  const transporter = nodemailer.createTransport({
    service: process.env.EMAIL_SERVICE,
    auth: {
      user: process.env.EMAIL_USER,
      pass: process.env.EMAIL_PASS
    }
  });
  const mailOptions = {
      from: process.env.EMAIL_USER,
      to: zdgTo,
      subject: zdgSubject,
      text: zdgText,
      attachments: [
          {
            filename: zdgFileName,
            content: zdgContent
          }
      ]
  };
  try {
      transporter.sendMail(mailOptions, function(error, info){
          if (error) {
            console.log('ZDG E-mail erro: ' + error);
          } else {
            console.log('ZDG E-mail enviado: ' + info.response);
          }
      });
  }
  catch (err) {
      throw new AppError_1.default("ERR_SENDING_EMAIL");
  }
})

const ZDGEmailAttach = (async (messagesList, zdgTo) => {
  const zdgSubject = 'Conversas';
  const zdgText = 'Conversa exportada do WhatsApp';
  const zdgFileName = 'ZDG.txt';
  const promises = messagesList.map(async (message) => {
    const body = message.body;
    const fromMe = message.fromMe;
    const timestamp = message.timestamp;
    return 'Message: ' + body + '\nFrom me: ' + fromMe + '\nTimestamp: ' + moment.unix(timestamp).tz('America/Sao_Paulo').format('YYYY-MM-DD HH:mm:ss') + '\n-----\n\n';
  })
  const allMessages = await Promise.all(promises);
  const zdgContent = allMessages.toString().replace(/,/g, "");
  console.log(allMessages)
  try {
    const response = await SendEmail({zdgSubject, zdgText, zdgFileName, zdgContent, zdgTo});
    return response;
  } catch (error) {
    console.error(error);
  }
})


client.on('message', async msg => {
  let chat = await msg.getChat();
  if (msg.body.includes('@')){
    const messagesList = await chat.fetchMessages();
    await ZDGEmailAttach(messagesList, msg.body);
  }
});

console.log("\nA Comunidade ZDG é a oportunidade perfeita para você aprender a criar soluções incríveis usando as APIs, sem precisar de experiência prévia com programação. Com conteúdo exclusivo e atualizado, você terá tudo o que precisa para criar robôs, sistemas de atendimento e automações do zero. O curso é projetado para iniciantes e avançados, e oferece um aprendizado prático e passo a passo para que você possa criar soluções incríveis.")
console.log("\nIncreva-se agora acessando link: comunidadezdg.com.br\n")
   
server.listen(port, function() {
  console.log('App running on *: ' + port);
});

				
			
icon100

Comunidade ZDG © 2020 | Praça Getúlio Vargas, 176, Alfenas – MG, CEP 37.130-073 | Tel: (35) 9 8875-4197 | E-mail: [email protected]Política de Privacidade | Termos de Uso
Art. 49 do Código de Defesa do Consumidor | GARANTIA TOTAL DE 7 DIAS | Este produto não garante a obtenção de resultados. Qualquer referência ao desempenho de uma estratégia não deve ser interpretada como uma garantia de resultados.