mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 04:29:16 +00:00
se agego multi-device .env
This commit is contained in:
@@ -8,4 +8,5 @@ LANGUAGE=es
|
|||||||
SQL_HOST=
|
SQL_HOST=
|
||||||
SQL_USER=
|
SQL_USER=
|
||||||
SQL_PASS=
|
SQL_PASS=
|
||||||
SQL_DATABASE=
|
SQL_DATABASE=
|
||||||
|
MULTI_DEVICE=false
|
||||||
35
app.js
35
app.js
@@ -9,7 +9,7 @@ const qrcode = require('qrcode-terminal');
|
|||||||
const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js');
|
const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js');
|
||||||
const mysqlConnection = require('./config/mysql')
|
const mysqlConnection = require('./config/mysql')
|
||||||
const { middlewareClient } = require('./middleware/client')
|
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 { connectionReady, connectionLost } = require('./controllers/connection')
|
||||||
const { saveMedia } = require('./controllers/save')
|
const { saveMedia } = require('./controllers/save')
|
||||||
const { getMessages, responseMessages, bothResponse } = require('./controllers/flows')
|
const { getMessages, responseMessages, bothResponse } = require('./controllers/flows')
|
||||||
@@ -17,7 +17,7 @@ const { sendMedia, sendMessage, lastTrigger, sendMessageButton, readChat } = req
|
|||||||
const app = express();
|
const app = express();
|
||||||
app.use(cors())
|
app.use(cors())
|
||||||
app.use(express.json())
|
app.use(express.json())
|
||||||
|
const MULTI_DEVICE = process.env.MULTI_DEVICE || 'false';
|
||||||
const server = require('http').Server(app)
|
const server = require('http').Server(app)
|
||||||
const io = require('socket.io')(server, {
|
const io = require('socket.io')(server, {
|
||||||
cors: {
|
cors: {
|
||||||
@@ -139,20 +139,9 @@ const listenMessage = () => client.on('message', async msg => {
|
|||||||
* este paso evita volver a escanear el QRCODE
|
* este paso evita volver a escanear el QRCODE
|
||||||
*/
|
*/
|
||||||
const withSession = () => {
|
const withSession = () => {
|
||||||
// Si exsite cargamos el archivo con las credenciales
|
|
||||||
console.log(`Validando session con Whatsapp...`)
|
console.log(`Validando session con Whatsapp...`)
|
||||||
sessionData = require(SESSION_FILE_PATH);
|
sessionData = require(SESSION_FILE_PATH);
|
||||||
client = new Client({
|
client = new Client(createClient(sessionData,true));
|
||||||
authStrategy: new LegacySessionAuth({
|
|
||||||
session: sessionData // saved session object
|
|
||||||
}),
|
|
||||||
restartOnAuthFail: true,
|
|
||||||
puppeteer: {
|
|
||||||
args: [
|
|
||||||
'--no-sandbox'
|
|
||||||
],
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('ready', () => {
|
client.on('ready', () => {
|
||||||
connectionReady()
|
connectionReady()
|
||||||
@@ -179,14 +168,7 @@ const withOutSession = () => {
|
|||||||
'________________________',
|
'________________________',
|
||||||
].join('\n'));
|
].join('\n'));
|
||||||
|
|
||||||
client = new Client({
|
client = new Client(createClient());
|
||||||
authStrategy: new LocalAuth(),
|
|
||||||
puppeteer: {
|
|
||||||
headless: true,
|
|
||||||
args: ['--no-sandbox']
|
|
||||||
},
|
|
||||||
clientId: 'client-one'
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('qr', qr => generateImage(qr, () => {
|
client.on('qr', qr => generateImage(qr, () => {
|
||||||
qrcode.generate(qr, { small: true });
|
qrcode.generate(qr, { small: true });
|
||||||
@@ -208,6 +190,13 @@ const withOutSession = () => {
|
|||||||
|
|
||||||
client.on('authenticated', (session) => {
|
client.on('authenticated', (session) => {
|
||||||
sessionData = 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();
|
client.initialize();
|
||||||
@@ -223,7 +212,7 @@ const loadRoutes = (client) => {
|
|||||||
/**
|
/**
|
||||||
* Revisamos si existe archivo con credenciales!
|
* 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
|
* Verificamos si tienes un gesto de db
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
|
const { Client, LegacySessionAuth, LocalAuth } = require('whatsapp-web.js');
|
||||||
const http = require('http'); // or 'https' for https:// URLs
|
const http = require('http'); // or 'https' for https:// URLs
|
||||||
const https = require('https'); // or 'https' for https:// URLs
|
const https = require('https'); // or 'https' for https:// URLs
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const qr = require('qr-image')
|
const qr = require('qr-image')
|
||||||
|
|
||||||
|
const MULTI_DEVICE = process.env.MULTI_DEVICE || 'false';
|
||||||
|
|
||||||
const cleanNumber = (number) => {
|
const cleanNumber = (number) => {
|
||||||
number = number.replace('@c.us', '');
|
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}
|
||||||
Reference in New Issue
Block a user