Jump to content
Bicrypto v4.6.0 + All Plugins
Posted
  • Popular Post
comment_35854

Whatsapp Gateway | Multi Device


This script has been completely modified and many important features and fixes have been added by @Magd Almuntaser
He is now responsible for the updates of this script and has full intellectual property rights
So no one will violate the terms of use that he has set

Latest Features:
1. WhatsApp Account Connectivity

All types of WhatsApp Accounts to be able to connect with WhatsApp Gateway (Multi Number & Multi Device);
Ease of the WhatsApp Account connectivity process with a QRcode Scan or with an Authentication Code directly from your device.

2. Message

Availability of various types of (text messages, media, polls, lists, locations, VCard) can easily be used by you;
You can send mass messages for your marketing campaign activities, promotions or business programs easily and on a scheduled basis;
Setup automatic message replies with more natural (alami) and selected keywords for operational optimization of use;
Manage sent message history with automatic and scheduled deletions.

4. Integration

You can easily integrate your WhatsApp Account with various (AI) artificial intelligence services, namely ChatGPT, DALL-E, Gemini, and Cloude with API authentication codes only;
You can easily activate Ai for Single or Multiple use on your WhatsApp Account;
You can easily select Ai in your WhatsApp messages for WhatsApp Group, Private, or Both types;
You can easily setup call rejection automatically if there is a (Call) call and provide a specific response or information;
Setup your WhatsApp and Ai accounts more naturally (alami) with "Already read" status";
Setup your WhatsApp and Ai accounts more naturally (natural) with the status "Typing...".
You can easily integrate and communicate your services with the Webhook mechanism of WhatsApp Gateway | Multi Device.

5. Application Settings

Nowadays you can easily and quickly carry out the process of setting up the WhatsApp Gateway | Multi Device* application by Magd Almuntaser with the settings panel;
You can easily set up applications based on server ecosystem, smtp, etc quickly;
Multi language support (english, Indonesian, Indian, Spanish and Arabic) for easy use.

6. Developer Options

Currently WhatsApp Gateway | Multi Device* by Magd Almuntaser has provided various API services for your easy development consisting of:
        1). Send Message API
        2). Send Media API
        3). Send Poll API
        4). API Send Button
        5). Send API Templates
        6). Send List message API
        7). Send Location API
        8). Send VCard API
        9). Generate QR API
        10). Disconnect devices
        11). Create User API
        12). User Info API
        13). Device Info API
        14). Check Number API
        15). Webhook Example

Ease of setup and availability of the (API Key) API Key for authentication and authorization of your development process.

7. Security

Currently there is a 2 factor authentication (2FA) service available to maintain the security and comfort of application access;
A password reset service is available if you forget your account login information.


Coming Soon:

1. Landing page for Software as Service services (Subscription Services);
2. Payment gateway page management (QRIS, BCA virtual account, PayPal, Stripe);
3. Added user account management;
4. (ticket) obstacle reporting service for users and managers;
.. And many more.


Whatsapp Gateway | Multi Device

  • Replies 4.5k
  • Views 282.1k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Magd Almuntaser
    Magd Almuntaser

    What's new so far in version 9.0.0: - Added landing page (welcome page). - Added plans system. - Added Manage Languages system. - Added (landing page) edit page. - Added ticket system. - Added cronjob

  • Magd Almuntaser
    Magd Almuntaser

    What's new so far in version 9.0.0: - Added Landing page (Homepage). - Added Plans System. - Added Manage Payment gateways. - Added Manage Languages system. - Added (Homepage) edit page. - Added Ticke

  • Magd Almuntaser
    Magd Almuntaser

    What's new in version 9.0.0 so far: - Added landing page (welcome page). - Added plans system. - Added cronjob page. - Added Multi-Keyword in autoreply. - Added send message with footer. -

Posted Images

Featured Replies

  • Author
comment_72027
5 hours ago, pak kacung said:

Ketika nodejs berhenti lalu jalan lagi bagaimana caranya agar device bisa auto konek kembali?

Perangkat selalu tetap terhubung, namun Node.js yang mungkin berhenti bekerja. Anda bisa menggunakan PM2 untuk menjaga agar Node.js tetap berjalan tanpa henti. Jika Anda mengalami masalah dengan ponsel yang terputus dari Node.js, Anda bisa mencoba PM2. Saya belum pernah mengalami masalah ini sebelumnya, tapi coba gunakan PM2

comment_72030
42 minutes ago, Magd Almuntaser said:

Perangkat selalu tetap terhubung, namun Node.js yang mungkin berhenti bekerja. Anda bisa menggunakan PM2 untuk menjaga agar Node.js tetap berjalan tanpa henti. Jika Anda mengalami masalah dengan ponsel yang terputus dari Node.js, Anda bisa mencoba PM2. Saya belum pernah mengalami masalah ini sebelumnya, tapi coba gunakan PM2

Siap terima kasih kawan

 

Bisakah ditambah skrip auto read ketika ada yang story di whatsapp seolah kita selalu melihatnya, padahal kita belum melihat story orang lain

comment_72043
On 7/2/2024 at 2:40 PM, MarCoVar01 said:

@The Billionaire What I do is in the campaign option that says delivery time between each message, I put it as a minimum of 10 to 15 seconds to try to prevent WhatsApp from taking it as spam, remember that there is also the possibility that if users They report that it happens faster

@MarCoVar01 image.png.d417e1db40f9faefe778fda94b1f061a.png
This is how I set it, or how many minutes should I set on the cron job to do it

  • Author
comment_72048
8 hours ago, Putra Pertama said:

@Magd Almuntaser

help please, on campaign and autoreply not work


ReferenceError: Cannot access 'inProgress' before initialization
    at sendBlastMessage (/home/waswupn/subdomain/waswupn.com/server/controllers/blast.js:40:3)
    at Layer.handle [as handle_request] (/home/waswupn/nodevenv/subdomain/waswupn.com/16/lib/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/waswupn/nodevenv/subdomain/waswupn.com/16/lib/node_modules/express/lib/router/route.js:149:13)
    at checkConnectionBeforeBlast (/home/waswupn/subdomain/waswupn.com/server/lib/middleware.js:34:5)

 

8 hours ago, Putra Pertama said:

autoreply not work. I tried text message, but not work

This issue is from the script developer. First, you can send a normal message via Test Message, and then you can try the auto reply
you will see it works normally.

The reason for this issue is that the developer forgot to establish the server connection before running the auto reply command. Therefore, you need to send a normal message first to activate the server, and then the auto reply will work.
And the same issue occurs with the CAMPAIGN, you need to send a normal message first

  • Author
comment_72050
26 minutes ago, The Billionaire said:

@MarCoVar01 image.png.d417e1db40f9faefe778fda94b1f061a.png
This is how I set it, or how many minutes should I set on the cron job to do it


You can see my previous comment here

 

I saw that you set 30 seconds for each message, but I'm telling you that even if you set an hour for each message, the company will block your phone number. When the company sees that you are sending many messages at the same time, they will block you. Also, if they see that you are sending many messages to many people, even if it's after every hour, they will still block you. That's why the company insists that the recipient must have added your number.

However, you can simplify this process by using the broadcast feature because WhatsApp only receives one number and sends it to all the people in the broadcast. Therefore, it considers that you have sent only one message.

You can see the broadcast ID from log on SSH if you change server/lib/pino.js from (level info) to (level debug) and restart node.
but you need to change some files to accept to send broadcast via this script because the developer forgot to add this feature

  • Author
comment_72051
26 minutes ago, The Billionaire said:

@MarCoVar01 image.png.d417e1db40f9faefe778fda94b1f061a.png
This is how I set it, or how many minutes should I set on the cron job to do it


You can see my previous comment here

doniaweb .com/topic/9514-whatsapp-gateway-multi-device-v700-nulled/page/20/#comment-57017

I saw that you set 30 seconds for each message, but I'm telling you that even if you set an hour for each message, the company will block your phone number. When the company sees that you are sending many messages at the same time, they will block you. Also, if they see that you are sending many messages to many people, even if it's after every hour, they will still block you. That's why the company insists that the recipient must have added your number.

However, you can simplify this process by using the broadcast feature because WhatsApp only receives one number and sends it to all the people in the broadcast. Therefore, it considers that you have sent only one message.

You can see the broadcast ID from log on SSH if you change server/lib/pino.js from (level info) to (level debug) and restart node.
but you need to change some files to accept to send broadcast via this script because the developer forgot to add this feature

  • Author
comment_72055
6 minutes ago, badas said:

Bro @Magd Almuntaser
In the campaign delay per second does not work.
Can you tell me where to change it to 30 seconds delay every time you send a message.

becouse you need to set cronjob to start campaign ..
see my link on my last comment 👆

comment_72058
40 minutes ago, Magd Almuntaser said:

becouse you need to set cronjob to start campaign ..
see my link on my last comment 👆

Yes, I have followed your instructions, create a schedule:run and schedule:blast in the cronjob, but the messages are still sent all at once without delay.

Edited by badas

comment_72065
1 hour ago, badas said:

Yes, I have followed your instructions, create a schedule:run and schedule:blast in the cronjob, but the messages are still sent all at once without delay.

@badas @Magd Almuntaser image.png.8bd07737ddb3bd7bbcc2123902b56d48.png

From what I am seeing if you create the blast on the cron job it will chunk the message to send to 20 numbers per minute, WhatsApp will still ban the number for spamming

comment_72067
3 hours ago, Magd Almuntaser said:


You can see my previous comment here

doniaweb .com/topic/9514-whatsapp-gateway-multi-device-v700-nulled/page/20/#comment-57017

I saw that you set 30 seconds for each message, but I'm telling you that even if you set an hour for each message, the company will block your phone number. When the company sees that you are sending many messages at the same time, they will block you. Also, if they see that you are sending many messages to many people, even if it's after every hour, they will still block you. That's why the company insists that the recipient must have added your number.

However, you can simplify this process by using the broadcast feature because WhatsApp only receives one number and sends it to all the people in the broadcast. Therefore, it considers that you have sent only one message.

You can see the broadcast ID from log on SSH if you change server/lib/pino.js from (level info) to (level debug) and restart node.
but you need to change some files to accept to send broadcast via this script because the developer forgot to add this feature

@Magd Almuntaser do you have a way or have a script for the broadcast????? features

  • Author
comment_72068
11 minutes ago, The Billionaire said:

@Magd Almuntaser do you have a way or have a script for the broadcast????? features

no i don't have but i will try ..
and you can see this link:

github .com/WhiskeySockets/Baileys/issues/619


and you can build small code to send to broadcast becouse this script use same lib (whiskeysockets/baileys)

comment_72089

@Magd Almuntaser

On 7/4/2024 at 1:20 PM, Magd Almuntaser said:

If you have vps you can install PM2 and start node with pm2 ..

I will try to fix it .. 

And i see many problems with the owner he forget many things so i will fix it ..

thanks sir, i will wait

 

 

17 hours ago, Magd Almuntaser said:

 

This issue is from the script developer. First, you can send a normal message via Test Message, and then you can try the auto reply
you will see it works normally.

The reason for this issue is that the developer forgot to establish the server connection before running the auto reply command. Therefore, you need to send a normal message first to activate the server, and then the auto reply will work.
And the same issue occurs with the CAMPAIGN, you need to send a normal message first

yes, if send a normal message first, autoreply work. but its tiring

  • Author
comment_72097
4 hours ago, Putra Pertama said:

@Magd Almuntaser

thanks sir, i will wait

 

 

yes, if send a normal message first, autoreply work. but its tiring

The problem is that if I fix the issues in this version, the developer will release a new version, like version 8, and all my fixes won't be included. So, with every new version the developer releases, I will have to redo all the fixes. I have tried to contact with the developer to include my previous fixes in his version, but he hasn't done anything
There are many issues that I have fixed, but I know he won't care about them no matter how much I contact him.

comment_72101
53 minutes ago, Magd Almuntaser said:

The problem is that if I fix the issues in this version, the developer will release a new version, like version 8, and all my fixes won't be included. So, with every new version the developer releases, I will have to redo all the fixes. I have tried to contact with the developer to include my previous fixes in his version, but he hasn't done anything
There are many issues that I have fixed, but I know he won't care about them no matter how much I contact him.

@Magd Almuntaser you know what since you have done fixes in yours push and give us the git repo to pull, whenever we see hes is more stable than yours we doubt he will ever make those changes, and i know u re using the one u have fix with changes, even this new version he called V7 i have gone through it no changes that look new inside.

so please can i get ur repo, or upload it somewhere let download it

  • Author
comment_72154

AutoReply
(fix for 7.0.0 & 6.5.x & 5.5.0)

Reason: Because there is no connection to the WhatsApp server after connecting to the socket.
Solution: Connect to the WhatsApp server for all the numbers in the database after connecting to the socket.


Replace the server.js file located in the root directory of the script with the following code:
 

"use strict";

// Copyright By Ilman Sunanuddin, M pedia
// Email : Ilmansunannudin2@gmail.com
// website : https://m-pedia.co.id
// Whatsap : 6282298859671
// ------------------------------------------------------------------
// You are not allowed to share or sell this source code without permission.

const wa = require("./server/whatsapp");
const fs = require("fs");
const dbs = require('./server/database/index');
require("dotenv").config();
const lib = require("./server/lib");
global.log = lib.log;

/**
 * EXPRESS FOR ROUTING
 */
const express = require("express");
const app = express();
const http = require("http");
const server = http.createServer(app);

/**
 * SOCKET.IO
 */
const { Server } = require("socket.io");
const io = new Server(server);
const port = process.env.PORT_NODE;
app.use((req, res, next) => {
  res.set("Cache-Control", "no-store");
  req.io = io;
  // res.set('Cache-Control', 'no-store')
  next();
});

const bodyParser = require("body-parser");

// parse application/x-www-form-urlencoded
app.use(
  bodyParser.urlencoded({
    extended: false,
    limit: "50mb",
    parameterLimit: 100000,
  })
);
// parse application/json
app.use(bodyParser.json());
app.use(express.static("src/public"));
app.use(require("./server/router"));

// console.log(process.argv)

io.on("connection", (socket) => {
  socket.on("StartConnection", (data) => {
    wa.connectToWhatsApp(data, io);
  });
  socket.on("ConnectViaCode", (data) => {
    wa.connectToWhatsApp(data, io, true);
  });
  socket.on("LogoutDevice", (device) => {
    wa.deleteCredentials(device, io);
  });
});
server.listen(port, console.log(`Server run and listening port: ${port}`));

dbs.db.query("SELECT * FROM devices WHERE status = 'Connected'", (err, results) => {
    if (err) {
      console.error('Error executing query:', err);
    }
    results.forEach(row => {
      const number = row.body;
      if (/^\d+$/.test(number)) {
        wa.connectToWhatsApp(number);
      }
    });
});

 

Edited by Magd Almuntaser

  • Author
comment_72156

Lost Connection And Node Shutdown
(fix for 7.0.0)

Reason: The libraries WhiskeySockets/Baileys and sharp are not compatible with version 7.0.0, which caused some issues and loss of connection to the WhatsApp server.
Solution: Update the WhiskeySockets/Baileys library to the latest version and update the sharp library to a version compatible with it.


Open the package.json file located in the root directory of the script and edit from:
 

"dependencies": {
    "@whiskeysockets/baileys": "github:laxeder/Baileys#fix-list-type",
    "axios": "^1.4.0",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "jimp": "^0.16.13",
    "lodash": "^4.17.21",
    "mime-types": "^2.1.35",
    "mysql2": "^3.9.2",
    "node-cache": "^5.1.2",
    "pino-pretty": "^10.2.0",
    "qrcode": "^1.5.3",
    "readline": "^1.3.0",
    "sharp": "^0.30.7",
    "socket.io": "^4.7.2"
  },

To:

"dependencies": {
    "@whiskeysockets/baileys": "^6.7.5",
    "axios": "^1.4.0",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "jimp": "^0.16.13",
    "lodash": "^4.17.21",
    "mime-types": "^2.1.35",
    "mysql2": "^3.9.2",
    "node-cache": "^5.1.2",
    "pino-pretty": "^10.2.0",
    "qrcode": "^1.5.3",
    "readline": "^1.3.0",
    "sharp": "^0.32.2",
    "socket.io": "^4.7.2"
  },


And run this SSH command in the root directory of the script:
 

npm update


=======================================================

Or if you don't have access to SSH or don't have a VPS, you can download the files from the attachments and replace them in your script without running any of the commands above.

fix_connecion_lost_7.0.0.zip

Edited by Magd Almuntaser

  • Author
comment_72158

Failed To Fetch Groups From Device
(fix for 7.0.0)

Reason: Failure to ensure connection to the WhatsApp server before fetching groups.
Solution: Connect to the WhatsApp server before performing the fetch operation.


Open the server/whatsapp.js and edit this function from:
 

async function fetchGroups(token) {
  try {
    let GetAll = await sock[token].groupFetchAllParticipating(),
      ResGet = Object.entries(GetAll)
        .slice(0)
        .map((MapGroup) => MapGroup[1])
    return ResGet
  } catch (error) {
    return false
  }
}

To:

async function fetchGroups(token) {
  try {
    if (typeof sock[token] === 'undefined') {
      const ConnBe = await connectWaBeforeSend(token)
      if (!ConnBe) {
        return false
      }
    }
    let GetAll = await sock[token].groupFetchAllParticipating(),
      ResGet = Object.entries(GetAll)
        .slice(0)
        .map((MapGroup) => MapGroup[1])
    return ResGet
  } catch (error) {
    return false
  }
}

 

===============================================

If your server/whatsapp.js file is encrypted, you can download my file from attachments.

whatsapp.js

Edited by Magd Almuntaser

comment_72163
38 minutes ago, Magd Almuntaser said:

Failed To Fetch Groups From Device
(fix for 7.0.0)

Reason: Failure to ensure connection to the WhatsApp server before fetching groups.
Solution: Connect to the WhatsApp server before performing the fetch operation.


Open the server/whatsapp.js and edit this function from:
 

async function fetchGroups(token) {
  try {
    let GetAll = await sock[token].groupFetchAllParticipating(),
      ResGet = Object.entries(GetAll)
        .slice(0)
        .map((MapGroup) => MapGroup[1])
    return ResGet
  } catch (error) {
    return false
  }
}

To:

async function fetchGroups(token) {
  try {
    if (typeof sock[token] === 'undefined') {
      const ConnBe = await connectWaBeforeSend(token)
      if (!ConnBe) {
        return false
      }
    }
    let GetAll = await sock[token].groupFetchAllParticipating(),
      ResGet = Object.entries(GetAll)
        .slice(0)
        .map((MapGroup) => MapGroup[1])
    return ResGet
  } catch (error) {
    return false
  }
}

 

===============================================

If your server/whatsapp.js file is encrypted, you can download my file from attachments.

whatsapp.js 15.73 kB · 0 downloads

Setelah mengikuti langkah" ini kenapa campaign tidak bisa terkirim, cara seting cronjobnya bagaimana?

  • Author
comment_72166

Campaign has not started
(fix for 7.0.0)

Reason: There is a conflict between the variable name and the function name, causing the campaign not to work.
Solution: Change the function name to a different name.

 

You can download the attached file and replace it with the file located at this path:

server/controllers/blast.js


And add this command in a CronJob every (1) minute:

/opt/alt/php81/usr/bin/php /path_to_your_script_root/artisan start:blast >/dev/null 2>&1

And

/opt/alt/php81/usr/bin/php /path_to_your_script_root/artisan schedule:run >/dev/null 2>&1

Don't forget to change /path_to_your_script_root/ to your script root and change /opt/alt/php81/usr/bin/php version to your php version or you can change it to only php /path_to_your_script_root/artisan start:blast >/dev/null 2>&1

@pak kacung

blast.js

Edited by Magd Almuntaser

  • Author
comment_72168

Campaign Delay
(fix for 7.0.0 & 6.5.x & 5.5.0)

Reason: There is error in setting the delay for each message, causing all messages to be sent at once in a batch.
Solution: Remove the min function from the code.


Replace the following code in the app/Console/Commands/StartBlast.php file at line 77 from:

$data = [
	'data' => $blastdata,
	'type' => $campaign->type,
	'delay' => min($campaign->delay, 1),
	'campaign_id' => $campaign->id,
	'sender' => $campaign->device->body,
];


To:

$data = [
	'data' => $blastdata,
	'type' => $campaign->type,
	'delay' => $campaign->delay,
	'campaign_id' => $campaign->id,
	'sender' => $campaign->device->body,
];

 

Edited by Magd Almuntaser

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Latest Updated Files