Bot WhatsApp performa tinggi yang dibangun dengan arsitektur modular, berbasis event, dan terintegrasi penuh dengan Maelyn API.
Didukung oleh Maelyn API β’ Dibangun dari basis SuryaRB
Haruna-Bot adalah kerangka kerja (framework) bot WhatsApp yang dirancang untuk kemudahan kustomisasi dan skalabilitas. Dengan sistem plugin yang intuitif, Anda dapat dengan mudah menambah atau mengubah fitur tanpa menyentuh kode inti. Ditenagai oleh @clayzaaubert/baileys-rise
, sebuah fork Baileys yang dioptimalkan, Haruna-Bot menawarkan stabilitas dan performa yang andal.
- π§© Sistem Plugin: Buat fitur dengan mengisolasi logika dalam file terpisah. Cukup letakkan di direktori
Features/
, dan bot akan memuatnya secara otomatis. - π Performa Tinggi: Arsitektur yang dioptimalkan untuk respons cepat dan penggunaan memori yang efisien.
- π Integrasi API: Dilengkapi dengan wrapper Axios untuk integrasi tanpa batas ke Maelyn API.
- π§ Konfigurasi Terpusat: Kelola semua pengaturan dalam satu file
config.js
yang mudah dipahami. - β° Penjadwalan Tugas (Cron): Jalankan fungsi secara otomatis pada interval waktu tertentu.
- π Login Aman: Mendukung login menggunakan Pairing Code, metode yang lebih aman dan praktis.
- Prasyarat
- Instalasi & Setup
- Menjalankan Bot
- Struktur Proyek
- Panduan Pengembangan
- Contributors
- Lisensi
-
Clone Repository:
git clone https://github.com/ClayzaAubert/Haruna-Bot.git cd Haruna-Bot
-
Instal Dependensi:
npm install
-
Konfigurasi Environment:
cp .env.example .env
Buka
.env
dan isiMAELYN_APIKEY
yang didapat dari dashboard Maelyn. -
Sesuaikan Konfigurasi: Buka
config.js
untuk mengatur nomorowners
,prefix
, dll.
- Mode Pengembangan:
npm start
- Mode Produksi (PM2):
pm2 start index.js --name "HarunaBot" pm2 logs HarunaBot
.
βββ Config/ # Konfigurasi tambahan (font, style, dll.)
βββ Features/ # Semua file plugin (perintah bot).
βββ Libs/ # Pustaka fungsi pembantu.
βββ Sockets/ # Mengelola koneksi dan logic socket Baileys.
βββ Utils/ # Utilitas umum (Messages.js).
βββ db/ # Penyimpanan database.json (jika mode JSON aktif).
βββ .env.example # Template variabel environment.
βββ config.js # Berkas konfigurasi utama.
βββ index.js # Titik masuk aplikasi.
βββ package.json # Dependensi dan skrip proyek.
Setiap file JavaScript di dalam direktori Features/
akan dimuat sebagai sebuah perintah bot.
-
Buat File Baru: Misalnya,
Features/demo.js
. -
Gunakan Struktur Dasar: Setiap plugin harus mengekspor objek dengan metadata dan fungsi
haruna
.export default { command: ["demo"], description: "Contoh plugin.", category: "Utility", haruna: async function(m, options) { // ... Logika bot ada di sini ... } };
Bagian ini adalah "dapur" dari bot Anda. Berikut adalah contoh lengkap yang bisa Anda letakkan di dalam fungsi haruna
untuk melakukan berbagai aksi umum.
// File: Features/demo.js
haruna: async function (m, { sock, api }) { // `m`, `sock`, `api` adalah objek pembantu
// 1. Membalas pesan
m.reply("Hello World!");
// 2. Membalas dengan gaya teks kustom
m.reply("Hello with style", "funky");
// 3. Mengirim pesan lalu mengeditnya (efek "loading...")
const update = await m.replyUpdate("Sedang memproses...");
await new Promise(resolve => setTimeout(resolve, 2000)); // Simulasi proses
update("βοΈ Proses Selesai!");
// 4. Memberi reaksi emoji pada pesan
m.react("π₯");
// 5. Mengunduh media (gambar/video/stiker) dari pesan
const media = await m?.download?.().catch(() => null);
if (media) {
m.reply("Media berhasil diunduh!");
// sock.sendMessage(m.chat, { image: media });
}
// 6. Request ke Maelyn API
try {
const response = await api.get("/ai/v2/tts", { text: "Halo dari Haruna Bot" });
if (response?.data?.status) {
m.reply(`Sukses! URL Audio: ${response.data.url}`);
}
} catch (e) {
m.reply(`Gagal request API: ${e.message}`);
}
}
Gunakan node-cron
untuk tugas terjadwal. Contoh: membuat file Events/dailyMessage.js
untuk mengirim pesan "selamat pagi" setiap hari.
import cron from "node-cron";
export default {
async all(_, sock) {
cron.schedule("0 8 * * *", async () => {
const groupId = "12036304xxxxxxxxxx@g.us"; // Ganti ID grup
try {
await sock.sendMessage(groupId, { text: "Selamat pagi! βοΈ" });
} catch (e) {
console.error("Gagal mengirim pesan harian:", e);
}
}, {
timezone: "Asia/Jakarta"
});
},
};
Meskipun fungsi m.reply()
sangat praktis, untuk kontrol lebih besar seperti mengirim media, mention, atau mengutip pesan secara spesifik, Anda harus menggunakan sock.sendMessage
. Ini adalah fungsi inti dari Baileys.
Berikut adalah beberapa contoh penggunaannya di dalam fungsi haruna
:
haruna: async function (m, { sock }) {
// 1. Mengirim gambar dari URL dengan caption
await sock.sendMessage(m.chat, {
image: { url: "https://s6.imgcdn.dev/Yc8bUC.png" },
caption: "Ini Kurodate Haruna!"
});
// 2. Mengirim audio sebagai Voice Note (PTT)
// Pastikan path ke file audio sudah benar
await sock.sendMessage(m.chat, {
audio: { url: "./path/to/your/audio.mp3" },
ptt: true // true untuk voice note, false untuk file audio biasa
});
// 3. Mengirim pesan sambil me-mention pengguna
const text = `Halo @${m.sender.split('@')[0]}, apa kabar?`;
await sock.sendMessage(m.chat, {
text: text,
mentions: [m.sender] // m.sender adalah JID pengguna
});
// 4. Membalas pesan spesifik (mengutip)
// Ini adalah cara kerja `m.reply()` di balik layar
await sock.sendMessage(m.chat, {
text: "Ini adalah balasan yang mengutip pesan Anda."
}, {
quoted: m.key // `m.key` berisi metadata pesan yang akan dikutip
});
}
Note
Untuk variasi sendMessage
yang lebih lengkap, seperti mengirim video, dokumen, stiker, tombol, dan lainnya, bisa kalian lihat disini: https://www.npmjs.com/package/@clayzaaubert/baileys-rise#sending-messages
- Clayza Aubert (Lead Developer)
- xct007 (Base Engine - SuryaRB)
This project is licensed under the MIT License.