Pranata Kernel

Dokumentasi untuk pengembang yang ingin melanjutkan dan mengembangkan PranataWicaksana menggunakan sistem modul yang bersih, aman, dan dapat diskalakan.

1. Arsitektur Inti

Pranata Kernel dibangun di atas @whiskeysockets/baileys. Berbeda dengan bot biasa, ia menggunakan ES Modules (ESM) untuk pemuatan dinamis.

Kernel dipisahkan secara ketat dari logika. Ia memuat file dari direktori /modules saat runtime. Struktur ini mencegah kesalahan perintah tunggal meruntuhkan seluruh proses dan memungkinkan hot-reloading tanpa me-restart proses Node.

2. Struktur Modul Dasar

Agar kontribusi Anda berfungsi, ikuti struktur ini. File harus berupa ES Modules yang valid.

Jalur Deskripsi
/modules Folder berisi semua file logika perintah (contoh: ping.js, stickers.js).
/auth_info Penyimpanan Baileys MultiFileAuthState (jangan diubah).

3. Kategori Perintah

Perintah dikelompokkan berdasarkan properti category di dalam objek modul.

🎐 Core

Perintah inti yang penting untuk fungsionalitas utama bot.

⚖️ Group Admin

Perintah untuk mengelola grup dan kebutuhan administrasi.

🎲 Games & Fun

Perintah hiburan, permainan, dan interaksi santai.

🔭 Utility

Perintah utilitas dan alat bantu yang berguna.

🛡️ Security

Fitur keamanan dan perlindungan bot.

👑 Owner

Perintah khusus yang hanya dapat digunakan oleh pemilik bot.

4. Contoh Modul Perintah

Buat file di /modules/mycommand.js.
Penting: Anda harus menggunakan export default.

// modules/ping.js
export default {
    name: "ping",
    alias: ["p", "tes"]  // Optional aliases
    category: "Utility",
    description: "Replies with Pong!",

    // RECEIVE 'send' function here
    execute: async ({ send, remoteJid, msg }) => { 
        // USE 'send' instead of sock.sendMessage
        await send(remoteJid, { text: "Pong!" }, { quoted: msg });
    }
};

5. Parameter Konteks execute()

Kernel mengirim satu objek berisi properti ini ke fungsi execute Anda:

Parameter Deskripsi
sock Instance socket Baileys mentah. Gunakan untuk aksi tingkat rendah.
send Direkomendasikan. Fungsi wrapper yang otomatis menambahkan watermark "ꦥꦿꦤꦠ ꦮꦶꦕꦏ꧀ꦱꦤ" ke pesan teks.
msg Objek pesan mentah (berisi key, konten pesan, dll).
remoteJid ID chat tempat perintah dikirim (User ID atau Group ID).
participant ID pengguna yang mengirim perintah.
args Array string (argumen perintah). Contoh: !kick @user -> ['@user'].
commands Map semua perintah yang dimuat (berguna untuk menu bantuan atau eksekusi perintah lain).
text Teks mentah lengkap dari pesan (tanpa prefix).

6. Message Handlers (Listener)

Handler berjalan pada setiap pesan, terlepas dari prefix. Digunakan untuk anti-spam, auto-reply, atau logging. Set isMessageHandler: true.

// modules/logger.js

export default {
    name: "logger",
    isMessageHandler: true, // Tandai sebagai listener

    async execute({ text, participant, isGroup }) {
        if (!text) return;
        
        console.log(`[MSG] Dari: ${participant} | Grup: ${isGroup}`);
        console.log(`Konten: ${text}`);
    }
};

Catatan: Handler menerima parameter tambahan fromListener: true dalam objek konteks.

7. Hot Reloading

Pranata Kernel mendukung reload langsung. Anda tidak perlu me-restart bot saat mengedit file di /modules.

Reload Modul Tanpa Restart:

global.reloadCommands();

Dapat dipanggil dari perintah admin, REPL, atau mode debug.

8. Catatan Penutup

Dengan mematuhi sistem modul secara ketat, Anda memastikan kernel inti tetap bersih dan dapat di-upgrade.

Pastikan nama file berakhiran .js dan diletakkan langsung di folder /modules.