WhatsApp Gateway Multi-Device (WAGW)

Project ini adalah WhatsApp Gateway API berbasis Node.js menggunakan library @whiskeysockets/baileys. Mendukung multi-device, pengiriman pesan massal (bulk blast) dengan rotasi pengirim acak, serta pencatatan log pesan menggunakan SQLite.

Fitur Utama

Instalasi

Cara Manual (Node.js)

  1. Pastikan Node.js sudah terinstal.
  2. Clone repository ini.
  3. Install dependencies:
    npm install
    
  4. Buat file .env (opsional, jika tidak ada akan menggunakan default):
    PORT=10000
    DEFAULT_API_KEY=wagw-secret-key
    
  5. Jalankan server:
    node app.js
    
  6. Atau jika ingin berjalan di background (gunakan process manager seperti pm2):
    pm2 start app.js --name wagw
    

Cara Menggunakan Docker

  1. Build image:
    docker build -t wagw .
    
  2. Jalankan container (mapping port 10000):
    docker run -d -p 10000:10000 --name wagw-container -v $(pwd)/sessions:/usr/src/app/sessions -v $(pwd)/.env:/usr/src/app/.env wagw
    
    Note: Volume -v digunakan agar sesi login tidak hilang saat container di-restart dan konfigurasi .env terbaca.

Konfigurasi

Konfigurasi server dilakukan melalui file .env.

Variable Default Deskripsi
PORT 10000 Port aplikasi berjalan
DEFAULT_API_KEY wagw-secret-key API Key default yang dibuat saat inisialisasi database

Keamanan API (API Key)

Semua endpoint API (/wagateway/*) dilindungi oleh API Key. Anda harus menyertakan API Key di Header atau Query Parameter pada setiap request.

API Key Default: Lihat konfigurasi DEFAULT_API_KEY di .env (default: wagw-secret-key)

PENTING: API Key ini disimpan di database SQLite (wagw.db) dalam tabel api_keys. Anda disarankan untuk mengubahnya atau menambahkan key baru langsung melalui database.

Cara Menggunakan

1. Manajemen Perangkat (Login, List, Logout, Delete)

Akses http://localhost:10000/ (sesuaikan port) di browser.

2. Mengirim Pesan Tunggal

Endpoint: POST /wagateway/kirimpesan

Header:

x-api-key: wagw-secret-key
Content-Type: application/json

Body (JSON):

{
    "sender": "admin1",
    "number": "6281234567890",
    "message": "Halo, ini pesan test"
}

3. Mengirim Pesan Massal (Blast)

Fitur ini akan mengirim pesan ke banyak nomor dengan menggunakan semua device yang terhubung secara acak.

Endpoint: POST /wagateway/blast

Header:

x-api-key: wagw-secret-key
Content-Type: application/json

Body (JSON):

{
    "numbers": [
        "6281234567890",
        "6289876543210",
        "08123456789"
    ],
    "messages": [
        "Halo, ini pesan variasi A",
        "Hi, apa kabar? ini variasi B",
        "Selamat siang, penawaran khusus C"
    ],
    "type": "text" 
}

Catatan: type bisa diisi text, image, atau document (jika image/document, tambahkan parameter url).

4. Melihat Log Pesan

Akses http://localhost:10000/logs-view untuk melihat riwayat pesan. Anda akan diminta memasukkan API Key untuk melihat data log demi keamanan.

Struktur Database (SQLite)

File database: wagw.db

Tabel message_logs

Tabel api_keys