✨ Lightweight & Modular — Struktur bersih, mudah diperluas
🔌 Plugin System — Tambah command dan handler kapan saja
🤖 AI Integration — Built-in support untuk Google Gemini
📦 Production Ready — Session management & error handling otomatis
🛠️ Developer Friendly — TypeScript-ready, hot reload support
⚙️ Configurable — Environment-based configuration
| Teknologi | Versi | Tujuan |
|---|---|---|
| Node.js | 18+ | Runtime |
| Baileys | Latest | WhatsApp Web API |
| JavaScript | ES2020+ | Language |
| Google Gemini | Optional | AI Responses |
baileys-base/
├── 📄 index.js # Entry point aplikasi
├── 📄 config.js # Konfigurasi global
├── 📄 package.json # Dependencies
├── 📁 commands/ # 🔌 Command plugins
│ ├── ping.js
│ └── menu.js
├── 📁 chats/ # 💬 Chat handlers & pipeline
│ └── ai.js
├── 📁 lib/ # 🛠️ Utilities & helpers
│ ├── Collection.js
│ ├── database.js
│ ├── functions.js
│ ├── gemini.js
│ ├── logger.js
│ ├── sendMessage.js
│ └── serialize.js
├── 📁 prompts/ # 📝 AI prompt templates
├── 📁 database/ # 💾 Data storage
├── 📁 events/ # 🎪 Event hooks
├── 📁 handlers/ # 🔄 Handler utilities
└── 📄 .env # Environment variables (git ignored)
Pesan Masuk
↓
lib/serialize.js (normalize payload)
↓
Command dispatcher (cek prefix & command)
↓
commands/ atau chats/ (execute handler)
↓
lib/sendMessage.js (kirim response)
↓
Pesan Keluar
- Node.js 18+ (LTS recommended)
- Git untuk clone repo
- Koneksi Internet stabil
# 1️⃣ Clone repository
git clone https://github.com/rtwone/baileys-base.git
cd baileys-base
# 2️⃣ Install dependencies
npm install
# 3️⃣ Setup environment
cp .env.example .env
# Edit .env sesuai kebutuhan (lihat section berikutnya)
# 4️⃣ Jalankan
npm run devDevelopment Mode (dengan auto-reload):
npm run devProduction Mode:
npm startBuat file .env di root directory:
# AI (optional)
GEMINI_API_KEY=your_api_key_here
⚠️ Important: Jangan commit.envke git — file ini berisi secrets!
Commands disimpan di folder commands/. Buat file baru dengan struktur:
// commands/hello.js
export default {
name: "hello",
aliases: ["hi", "hey"],
category: "fun",
cooldown: 5,
description: "Ucapkan hello ke bot",
async execute({ m, sock }) {
const text = args.join(" ") || "World";
return m.reply(`Hello ${text}! 👋`);
}
}Opsi tersedia:
name(required) — Nama commandaliases— Alias command lainnyacategory— Kategori commandcooldown— Delay antar eksekusi (dalam detik)description— Deskripsi singkatexecute— Fungsi handler
Handlers di chats/ dijalankan untuk semua pesan sebelum command dispatcher:
// chats/ai.js
import { askGemini } from "../lib/gemini.js";
export async function chatHandler(m, sock) {
// Cek apakah ada prefix (jika ada, skip handler ini)
if (m.text?.startsWith(m.prefix)) return;
// Respons dengan AI jika diaktifkan
const response = await askGemini(m.text);
return m.reply(response);
}Gunakan m.stop() untuk menghentikan pipeline.
Wrapper untuk mengirim pesan dengan berbagai tipe:
m.reply(text) // Reply text
m.send(text) // Send message
m.react(emoji) // React dengan emoji
m.edit(newText) // Edit pesan
m.delete() // Delete pesanNormalisasi pesan masuk:
m.text // Teks pesan
m.sender // ID pengirim
m.isGroup // Apakah group chat
m.prefix // Bot prefix
m.command // Command yang digunakan
m.args // Argumen command
m.quoted // Pesan yang di-replyHelper utilities:
formatDate()— Format tanggalformatTime()— Format waktudelay()— Sleep/delayfetch()— HTTP requestsrandomChoice()— Pilih random dari array
Penyimpanan data sederhana (file-based):
db.set(key, value)
db.get(key)
db.delete(key)
db.all()-
Dapatkan API key dari Google AI Studio
-
Masukkan ke
.env:GEMINI_API_KEY=your_api_key_here
-
Gunakan di handler:
import { askGemini } from "./lib/gemini.js";
const response = await askGemini("Your question here");
m.reply(response);Logger tersedia di lib/logger.js:
import logger from "./lib/logger.js";
logger.info("Bot started");
logger.warn("Low storage");
logger.error("Connection failed");
logger.debug("Payload:", payload);Tips debugging:
- Jalankan dengan
NODE_ENV=developmentuntuk verbose logging - Cek QR code di terminal saat pertama kali koneksi
- Monitor session file di folder
./auth
# Install PM2 globally
npm install -g pm2
# Start aplikasi
pm2 start index.js --name "baileys-bot"
# Setup auto-restart
pm2 startup
pm2 save
# Monitor
pm2 monitFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["npm", "start"]✅ Simpan session di lokasi persistent
✅ Backup auth folder secara berkala
✅ Monitor resource usage
✅ Setup proper error handling & logging
✅ Gunakan environment variables untuk secrets
- Proyek ini tidak berafiliasi dengan WhatsApp/Meta
- Penggunaan bot harus sesuai dengan WhatsApp Terms of Service
- Jangan gunakan untuk spam atau aktivitas ilegal
- Tanggung jawab penggunaan ada di tangan Anda
- Selalu backup session file Anda
Kami menerima kontribusi! Berikut cara berkontribusi:
- Fork repository ini
- Buat branch fitur:
git checkout -b feat/amazing-feature - Commit perubahan:
git commit -m 'Add amazing feature' - Push ke branch:
git push origin feat/amazing-feature - Buka Pull Request dengan deskripsi detail
- Follow code style yang ada
- Tambahkan comments untuk kode kompleks
- Test di development sebelum push
- Update dokumentasi jika diperlukan
| Topik | Link |
|---|---|
| Command API | commands/ |
| Chat Handlers | chats/ |
| Utilities | lib/ |
MIT License © 2026 rtwone
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction...
Lihat file LICENSE untuk detail lengkap.
| Platform | Link |
|---|---|
| GitHub | @rtwone |
| Issues | Buka Issue |
| Discussions | Mulai Diskusi |
| @irfvnny |
Made with ❤️ by rtwone
Jika proyek ini membantu Anda, jangan lupa ⭐ star repository ini!