⸙ 𝙊𝙏𝘼𝙓 — 𝙎𝙔𝙎𝙏𝙀𝙈.𝘽𝘼𝙄𝙇𝙀𝙔𝙎
---
⸙ Deskripsi
sistem.baileys adalah modul inti OTAX yang menangani seluruh proses koneksi WhatsApp. Modul ini mengelola lifecycle WebSocket Baileys, validasi sesi, pairing, sinkronisasi event, media handler, hingga mekanisme auto-recovery. Sistem ini didesain untuk performa tinggi, reconnect cepat, dan stabilitas maksimal dalam ekosistem OTAX.
⸙ Fitur Utama
⚙️ Inisialisasi WebSocket Baileys dengan konfigurasi OTAX
🔁 Auto-reconnect dan pemulihan state ketika koneksi terputus
🧩 Integrasi penuh ke modul OTAX lain: SessionPool, SenderLock, Gateway, EventRouter
📡 Event lengkap: messages.upsert, connection.update, contacts.update, groups.update
🔒 Proteksi runtime: anti-crash, anti-tamper, auto-heal, markOnlineOnConnect control
📦 Store terintegrasi: in-memory, FS, dan adapter eksternal
🖼️ Media utility: unduh, reupload, convert, decrypt, stream
📲 Pairing mode ganda: QR dan pairing code
⸙ Alur Kerja sistem.baileys
-
Memuat kredensial dari OTAX_SESSION_DIR
-
Membuka koneksi WebSocket WhatsApp
-
Melakukan sinkronisasi perangkat
-
Mengaktifkan event handler inti
-
Menghubungkan store untuk riwayat dan retry
-
Menjalankan sistem proteksi runtime
-
Mengaktifkan server event internal untuk modul lain
-
Jika koneksi terputus, sistem menjalankan auto-recovery
⸙ Konfigurasi Sistem
Gunakan environment variable berikut:
OTAX_SESSION_DIR=./data/auth/otax
OTAX_LOG_DIR=./logs
OTAX_SENDER_NUMBER=6285XXXXXXXX
OTAX_RUNTIME_MODE=production
OTAX_USE_STORE=true
Struktur direktori yang direkomendasikan:
.
├─ system/
│ └─ baileys/
│ ├─ index.ts
│ ├─ core.ts
│ ├─ connect.ts
│ ├─ events.ts
│ └─ media.ts
├─ data/
│ └─ auth/
├─ logs/
└─ package.json
⸙ Inisialisasi Socket
TypeScript:
import makeWASocket, { useMultiFileAuthState, Browsers, DisconnectReason } from "@whiskeysockets/baileys"
import pino from "pino"
export async function initBaileys() {
const { state, saveCreds } = await useMultiFileAuthState(process.env.OTAX_SESSION_DIR)
const sock = makeWASocket({
auth: state,
browser: Browsers.macOS("OTAX-System"),
markOnlineOnConnect: false,
printQRInTerminal: true,
logger: pino({ level: "silent" })
})
sock.ev.on("creds.update", saveCreds)
sock.ev.on("connection.update", ({ connection, lastDisconnect }) => {
const code = lastDisconnect?.error?.output?.statusCode
if (connection === "close" && code !== DisconnectReason.loggedOut) initBaileys()
})
return sock
}
⸙ Pairing Mode
import makeWASocket from "@whiskeysockets/baileys"
export async function pairing() {
const sock = makeWASocket({ printQRInTerminal: false })
if (!sock.authState.creds.registered) {
const number = process.env.OTAX_SENDER_NUMBER
const code = await sock.requestPairingCode(number)
console.log("Pairing Code:", code)
}
}
⸙ Event Handler
export function attachEvents(sock) {
sock.ev.on("messages.upsert", async ({ messages }) => {
for (const m of messages) {
const text = m.message?.conversation || m.message?.extendedTextMessage?.text || ""
if (/^/ping$/i.test(text)) await sock.sendMessage(m.key.remoteJid, { text: "⸙ OTAX — pong" })
}
})
sock.ev.on("groups.update", console.log)
sock.ev.on("presence.update", console.log)
sock.ev.on("contacts.update", console.log)
}
⸙ Media Utility
import { downloadMediaMessage } from "@whiskeysockets/baileys"
import { createWriteStream } from "fs"
export async function saveImage(sock, m) {
const stream = await downloadMediaMessage(m, "stream", {}, { reuploadRequest: sock.updateMediaMessage })
stream.pipe(createWriteStream("./file.jpeg"))
}
⸙ Mode Rekomendasi
markOnlineOnConnect: false untuk mode silent
syncFullHistory: true untuk pemulihan riwayat
browser: Browsers.macOS("OTAX-System") agar sinkronisasi optimal
linking: pairing code untuk deploy lewat panel atau Telegram
⸙ Keamanan
Gunakan environment variable untuk semua kredensial
Hindari memasukkan nomor atau token langsung ke kode
Amankan folder session
Gunakan log minimal untuk menghindari bocor data
Aktifkan anti-tamper saat produksi
⸙ Lisensi
Berbasis pada Baileys MIT license
Distribusi mengikuti standar lisensi upstream
Gunakan secara bertanggung jawab sesuai kebijakan WhatsApp
⸙ Dukungan
WhatsApp Owner: wa.me/6281945938917
Telegram Team: t.me/Otapengenkawin