yayan 1 年之前
父节点
当前提交
8c9298ee17
共有 2 个文件被更改,包括 59 次插入51 次删除
  1. 40 4
      main.js
  2. 19 47
      whatsapp-client.js

+ 40 - 4
main.js

@@ -1,12 +1,25 @@
 const { WhasAppClient } = require('./whatsapp-client.js');
+const { MessageMedia } = require('whatsapp-web.js');
 const express = require('express');
-const axios = require('axios')
+const f = require('fs');
 
 const map = new Map();
 const duplicateMap = new Map();
 
+f.readdir('.wwebjs_auth', (err, files) => {
+    files.forEach(file => {
+        console.log(`Read session: ${file}`);
+        const session = file.split('-')[1];
+        const wa = new WhasAppClient(session, null);
+        wa.client.on('ready', () => {
+            console.log(`be:${wa.clientId}:Client is ready!`);
+            map.set(wa.clientId, wa.client);
+        });
+    });
+});
+
 const app = express();
-app.use(express.json());
+app.use(express.json({limit: '50mb'}));
 app.get("/api/qr/:be", (req, res) => {
     try {
         console.log(`params:${req.params.be}`);
@@ -23,6 +36,28 @@ app.get("/api/qr/:be", (req, res) => {
         }
         duplicateMap.set(be, be);
         const wa = new WhasAppClient(be, res);
+        wa.client.on('qr', async qr => {
+            console.log(`be:${wa.clientId}:qr:${qr}`);
+            if (!wa.isGenerateQr) {
+                res.json({ status: '00', be: wa.clientId, qr: qr });
+            }
+            wa.isGenerateQr = true;
+
+            // generate qr
+            qrcode.generate(qr, { small: true });
+
+            // kirim ke abi untuk update qr
+            axios.post('https://nexilis.io/dashboardv2/logics/insert_whatsapp_qrcode', {
+                be: wa.clientId,
+                qrcode: qr
+            })
+                .then(function (response) {
+                    console.log(response);
+                })
+                .catch(function (error) {
+                    console.log(error);
+                });
+        });
         wa.client.on('ready', () => {
             console.log(`be:${wa.clientId}:Client is ready!`);
             map.set(wa.clientId, wa.client);
@@ -46,11 +81,12 @@ app.post("/api/send/:be", async (req, res) => {
         const to = req.body.to;
         const message = req.body.message;
         if (Object.hasOwn(message, 'media')) {
+            const fileName = req.body.message.fileName;
             const media = req.body.message.media;
             const data = req.body.message.data;
             const caption = req.body.message.caption;
-            let messageMedia = await new MessageMedia(media, data, caption)
-            await client.sendMessage(`${to}@c.us`, messageMedia,);
+            let messageMedia = new MessageMedia(media, data, fileName);
+            await client.sendMessage(`${to}@c.us`, messageMedia, { caption: caption});
             res.json({ status: '00', be: be });
             return;
         }

+ 19 - 47
whatsapp-client.js

@@ -1,11 +1,10 @@
 const { Client, LocalAuth } = require('whatsapp-web.js');
 const qrcode = require('qrcode-terminal');
-const axios = require('axios')
+const axios = require('axios');
 
 class WhasAppClient {
-    constructor(be, res) {
+    constructor(be) {
         this.clientId = be;
-        this.res = res;
         this.isGenerateQr = false;
         this.client = new Client({
             puppeteer: {
@@ -27,52 +26,25 @@ class WhasAppClient {
             console.log(`be:${this.clientId}:Authenticated`);
         });
 
-        this.client.on('qr', async qr => {
-            console.log(`be:${this.clientId}:qr:${qr}`);
-            if (!this.isGenerateQr) {
-                this.res.json({ status: '00', be: this.clientId, qr: qr });
-            }
-            this.isGenerateQr = true;
-
-            // generate qr
-            qrcode.generate(qr, { small: true });
-
-            // kirim ke abi untuk update qr
-            axios.post('https://nexilis.io/dashboardv2/logics/insert_whatsapp_qrcode', {
-                be: this.clientId,
-                qrcode: qr
-            })
-                .then(function (response) {
-                    console.log(response);
-                })
-                .catch(function (error) {
-                    console.log(error);
-                });
-        });
-
         let that = this.client;
         this.client.on('message', async (msg) => {
-            console.log(`be:${this.clientId}:message:${JSON.stringify(msg)}`);
-            try {
-                axios.post('https://nexilis.io/chatgpt/gptnexilis', [{
-                    role: 'user',
-                    content: msg.body
-                }], {
-                    headers: {
-                        'User-Agent': 'easySoftIndonesia',
-                        'Cookie': 'PHPSESSID=123;MOBILE=123'
-                    }
-                })
-                    .then(function (response) {
-                        console.log(`response:${JSON.stringify(response.data)}`);
-                        that.sendMessage(msg.from, response.data.content);
-                    })
-                    .catch(function (error) {
-                        console.log(error);
-                    });
-            } catch (error) {
-                console.log(`error:${error}`);
-            }
+            // console.log(`be:${this.clientId}:message:${JSON.stringify(msg)}`);
+            // axios.post('https://nexilis.io/chatgpt/gptnexilis', [{
+            //     role: 'user',
+            //     content: msg.body
+            // }], {
+            //     headers: {
+            //         'User-Agent': 'easySoftIndonesia',
+            //         'Cookie': 'PHPSESSID=123;MOBILE=123'
+            //     }
+            // })
+            //     .then(function (response) {
+            //         console.log(`response:${JSON.stringify(response.data)}`);
+            //         that.sendMessage(msg.from, response.data.content);
+            //     })
+            //     .catch(function (error) {
+            //         console.log(error);
+            //     });
         });
 
         this.client.on('disconnected', async (reason) => {