123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- const { WhasAppClient, map, duplicateMap } = require('./whatsapp-client.js');
- const { MessageMedia } = require('whatsapp-web.js');
- const express = require('express');
- const https = require('https');
- const fs = require('fs');
- function createWa(be, res) {
- new WhasAppClient(be, res);
- }
- fs.readdir('.wwebjs_auth', (err, files) => {
- if (files != null) {
- files.forEach(file => {
- console.log(`Read session: ${file}`);
- const be = file.split('-')[1];
- createWa(be);
- });
- }
- });
- const app = express();
- app.use(express.json({ limit: '50mb' }));
- app.get("/api/qr/:be", (req, res) => {
- console.log(`params:${req.params.be}`);
- const be = req.params.be;
- try {
- const client = map.get(be);
- if (client != null) {
- res.json({ status: '00', be: be });
- return;
- }
- const duplicate = duplicateMap.get(be);
- if (duplicate != null) {
- res.json({ status: '02', be: be, description: 'Duplicate request' });
- return;
- }
- duplicateMap.set(be, be);
- createWa(be, res);
- } catch (error) {
- console.log(`error:${error}`);
- res.json({ status: '99', be: be, description: 'General error' });
- }
- });
- app.post("/api/send/:be", async (req, res) => {
- console.log(`params:${req.params.be}, body:${JSON.stringify(req.body)}`);
- const be = req.params.be;
- try {
- const client = map.get(be);
- if (client == null) {
- res.json({ status: '01', be: be, description: 'Unauthorize access' });
- return;
- }
- 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 = new MessageMedia(media, data, fileName);
- to.forEach(it => {
- client.sendMessage(`${it}@c.us`, messageMedia, { caption: caption });
- });
- res.json({ status: '00', be: be });
- return;
- }
- to.forEach(it => {
- client.sendMessage(`${it}@c.us`, message);
- });
- res.json({ status: '00', be: be });
- } catch (error) {
- console.log(`error:${error}`);
- res.json({ status: '99', be: be, description: 'General error' });
- }
- });
- const port = process.env.PORT || 9009;
- const options = {
- key: fs.readFileSync('./server.key'),
- cert: fs.readFileSync('./server.crt'),
- rejectUnauthorized: false,
- requestCert: true,
- agent: false
- };
- https.createServer(options, app).listen(port, () => {
- console.log(`Server running on port ${port}`);
- });
|