Kembali ke halaman utama

Panduan Lengkap QR Bridge WA

Ikuti urutan ini agar QR dari bot WhatsApp muncul otomatis di link publik, berganti secara realtime, dan hilang saat server berhenti.

A. Menghubungkan bot WhatsApp

1

Buka area admin

Buka /admin, masukkan kode admin, lalu pilih tab Webhook & Token.

2

Salin alamat dan token

Salin URL Endpoint (POST) dan Token Rahasia. Jangan bagikan token karena siapa pun yang memilikinya dapat mengubah QR.

3

Pasang kode di script bot

Buka tab Kode Bot dan salin kode yang sudah berisi alamat serta token Anda. Tempel setelah objek sock Baileys dibuat.

4

Restart bot dari panel

Simpan script, restart server bot, lalu lihat Konsol Aktivitas di admin. Urutan normal adalah connecting → qr → connected.

5

Bagikan link khusus

Salin Link QR Khusus dari bagian atas admin. Hanya pemegang link itu yang bisa melihat dan memindai QR — halaman utama tidak menampilkan QR sama sekali.

6

Buat link baru bila perlu

Tekan Buat Link Baru di admin untuk mengganti link. Semua link lama langsung ditolak dan pemakainya melihat pesan “Link tidak berlaku”.

7

Unduh gambar QR

Di halaman QR (admin maupun link khusus) tersedia tombol Unduh Gambar QR untuk menyimpan QR sebagai file PNG.

Contoh pemasangan manual di Baileys

Gunakan kode dari tab Kode Bot karena alamat dan tokennya sudah terisi. Contoh lengkap bentuk integrasinya:

// Letakkan sesudah sock dibuat oleh Baileys
const QR_ENDPOINT = "SALIN_URL_ENDPOINT_DARI_ADMIN";
const PUSH_TOKEN = "SALIN_TOKEN_DARI_ADMIN";

async function kirimStatus(event, data = {}) {
  const response = await fetch(QR_ENDPOINT, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ token: PUSH_TOKEN, event, ...data }),
  });

  if (!response.ok) {
    console.error("QR Bridge ditolak:", response.status, await response.text());
  }
}

sock.ev.on("connection.update", async (update) => {
  const { connection, qr, lastDisconnect } = update;

  if (qr) await kirimStatus("qr", { qr, ttl: 60 });
  if (connection === "connecting") await kirimStatus("connecting");
  if (connection === "open") {
    await kirimStatus("connected", {
      phone: sock.user?.id?.split(":")[0],
    });
  }
  if (connection === "close") {
    await kirimStatus("close", {
      message: "Koneksi bot terputus: " +
        (lastDisconnect?.error?.output?.statusCode ?? "tidak diketahui"),
    });
  }
});

for (const signal of ["SIGINT", "SIGTERM"]) {
  process.on(signal, async () => {
    await kirimStatus("stopped", { message: "Server bot dihentikan" });
    process.exit(0);
  });
}
Jika Pterodactyl memaksa proses berhenti tanpa memberi waktu pada SIGTERM, event stopped mungkin tidak sempat terkirim. Koneksi panel di bagian berikut menjadi pemeriksaan cadangan.

B. Menghubungkan Pterodactyl

1

Pastikan panel dapat dibuka dari internet

Gunakan alamat HTTPS utama, misalnya https://panel.domainanda.com. Jangan menambahkan /api, alamat localhost, atau IP jaringan lokal.

2

Buat Client API Key

Masuk ke panel menggunakan akun yang memiliki akses ke server bot. Buka menu akun, pilih API Credentials, lalu buat key baru. Key yang benar biasanya diawali ptlc_.

Jangan memakai Application API Key ptla_ dari area administrator.

3

Ambil Server ID yang benar

Buka server bot di panel. Dari URL seperti /server/1a7ce997, salin bagian 1a7ce997. Jangan isi nama server, nomor node, atau allocation ID.

4

Periksa koneksi

Di admin, buka tab Panel Pterodactyl, isi ketiga kolom, lalu tekan Periksa Status Server. Jika berhasil, status running, starting, stopping, atau offline akan muncul.

5

Biarkan pemantauan aktif

Selama halaman admin terbuka, status diperiksa setiap 15 detik. Ketika panel menyatakan offline, QR publik akan langsung dihapus dan ditandai kedaluwarsa.

C. Jika panel terus menolak

401

API key salah atau bukan Client API Key. Buat key dari Account → API Credentials dan pastikan berawalan ptlc_.

403

Akun pemilik API key tidak memiliki akses ke server tersebut.

404

Server ID salah, atau URL panel berisi alamat yang tidak tepat.

429

Panel membatasi terlalu banyak permintaan. Tunggu sebentar sebelum mencoba lagi.

Tidak terhubung

Panel tidak publik, HTTPS/sertifikat bermasalah, atau perlindungan Cloudflare memblokir API.

Coba buka URL panel di browser biasa untuk memastikan domain aktif dan sertifikat HTTPS valid.

Pastikan akun pembuat key dapat membuka server bot yang sama di panel.

Jika memakai Cloudflare, izinkan jalur /api/client/* dan jangan tampilkan challenge CAPTCHA pada jalur itu.

Format webhook dan event

EventTampilanKeterangan
qrQR baruWajib sertakan qr. Boleh teks mentah dari Baileys atau gambar base64.
connectingMenghubungkanMenampilkan status sedang membuat QR baru.
connected / openBerhasilMenghapus QR dan menampilkan perangkat sudah tertaut.
close / stoppedBerhentiMenghapus QR dan menampilkan server berhenti/kedaluwarsa.
logoutKeluarMenghapus QR dan menandai sesi WhatsApp telah keluar.
POST /api/public/wa/push
Content-Type: application/json

{
  "token": "TOKEN_RAHASIA_ANDA",
  "event": "qr",
  "qr": "TEKS_QR_DARI_BAILEYS",
  "ttl": 60
}

QR baru menggantikan QR lama otomatis.

Status berubah setelah perangkat tertaut.

Token hanya terlihat di area admin.