se agego multi-device .env

This commit is contained in:
Leifer Mendez
2022-03-16 10:05:13 +01:00
parent 981a6bd928
commit e4378fe848
3 changed files with 50 additions and 25 deletions

View File

@@ -8,4 +8,5 @@ LANGUAGE=es
SQL_HOST=
SQL_USER=
SQL_PASS=
SQL_DATABASE=
SQL_DATABASE=
MULTI_DEVICE=false

35
app.js
View File

@@ -9,7 +9,7 @@ const qrcode = require('qrcode-terminal');
const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js');
const mysqlConnection = require('./config/mysql')
const { middlewareClient } = require('./middleware/client')
const { generateImage, cleanNumber, checkEnvFile } = require('./controllers/handle')
const { generateImage, cleanNumber, checkEnvFile, createClient } = require('./controllers/handle')
const { connectionReady, connectionLost } = require('./controllers/connection')
const { saveMedia } = require('./controllers/save')
const { getMessages, responseMessages, bothResponse } = require('./controllers/flows')
@@ -17,7 +17,7 @@ const { sendMedia, sendMessage, lastTrigger, sendMessageButton, readChat } = req
const app = express();
app.use(cors())
app.use(express.json())
const MULTI_DEVICE = process.env.MULTI_DEVICE || 'false';
const server = require('http').Server(app)
const io = require('socket.io')(server, {
cors: {
@@ -139,20 +139,9 @@ const listenMessage = () => client.on('message', async msg => {
* este paso evita volver a escanear el QRCODE
*/
const withSession = () => {
// Si exsite cargamos el archivo con las credenciales
console.log(`Validando session con Whatsapp...`)
sessionData = require(SESSION_FILE_PATH);
client = new Client({
authStrategy: new LegacySessionAuth({
session: sessionData // saved session object
}),
restartOnAuthFail: true,
puppeteer: {
args: [
'--no-sandbox'
],
}
});
client = new Client(createClient(sessionData,true));
client.on('ready', () => {
connectionReady()
@@ -179,14 +168,7 @@ const withOutSession = () => {
'________________________',
].join('\n'));
client = new Client({
authStrategy: new LocalAuth(),
puppeteer: {
headless: true,
args: ['--no-sandbox']
},
clientId: 'client-one'
});
client = new Client(createClient());
client.on('qr', qr => generateImage(qr, () => {
qrcode.generate(qr, { small: true });
@@ -208,6 +190,13 @@ const withOutSession = () => {
client.on('authenticated', (session) => {
sessionData = session;
if(sessionData){
fs.writeFile(SESSION_FILE_PATH, JSON.stringify(session), function (err) {
if (err) {
console.log(`Ocurrio un error con el archivo: `, err);
}
});
}
});
client.initialize();
@@ -223,7 +212,7 @@ const loadRoutes = (client) => {
/**
* Revisamos si existe archivo con credenciales!
*/
(fs.existsSync(SESSION_FILE_PATH)) ? withSession() : withOutSession();
(fs.existsSync(SESSION_FILE_PATH) && MULTI_DEVICE === 'false') ? withSession() : withOutSession();
/**
* Verificamos si tienes un gesto de db

View File

@@ -1,8 +1,10 @@
const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js');
const http = require('http'); // or 'https' for https:// URLs
const https = require('https'); // or 'https' for https:// URLs
const fs = require('fs');
const qr = require('qr-image')
const MULTI_DEVICE = process.env.MULTI_DEVICE || 'false';
const cleanNumber = (number) => {
number = number.replace('@c.us', '');
@@ -57,4 +59,37 @@ const checkEnvFile = () => {
}
}
module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile}
/**
*
* @param {*} session
* @param {*} cb
*/
const createClient = (session = {}, login = false) => {
console.log(`Mode: ${(MULTI_DEVICE === 'false') ? 'No Multi-device' : 'Si Multi-device'} `)
const objectLegacy = (login) ? {
authStrategy: new LegacySessionAuth({
session
})
} : {session};
if(MULTI_DEVICE == 'false') {
return {...objectLegacy,
restartOnAuthFail: true,
puppeteer: {
args: [
'--no-sandbox'
],
}
}
}else{
return {
puppeteer: {
headless: true,
args: ['--no-sandbox']
},
clientId: 'client-one'
}
}
}
module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile, createClient}