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: truedalam 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
.jsdan diletakkan langsung di folder/modules.