Source code bot Telegram untuk jualan produk digital/fisik dengan manajemen stok dan pembayaran otomatis via Betabotz Paygate.
- Manajemen produk, varian, dan stok dari Telegram.
- Pembayaran otomatis (QRIS/ewallet sesuai metode Betabotz).
- Proses transaksi otomatis (cek pembayaran, kirim stok, update status).
- Owner menu + broadcast ke user.
- Proteksi order expired dan refund stok otomatis saat batal.
- Node.js + Telegraf
- MongoDB + Mongoose
- Betabotz Paygate SDK
.
|- index.js # Entrypoint bot
|- settings.js # Konfigurasi global (token, DB, paygate)
|- handler.js # Handler hears/action
|- plugins/ # Command handlers
|- function/ # Proses transaksi dan utilitas
|- database/
| |- index.js # Koneksi MongoDB
| `- models/ # Model data
`- media/ # Asset media
Pastikan sudah terpasang:
- Node.js 18+ (disarankan 20+)
- MongoDB URI aktif
- Token bot Telegram dari
@BotFather - API key Betabotz Paygate
Sebelum bot dapat mendeteksi pembayaran otomatis, WAJIB setup listener terlebih dahulu:
👉 https://web.btzpay.my.id/tutorial
Mengapa ini penting?
- Tanpa listener, bot TIDAK AKAN BISA MENDETEKSI pembayaran yang masuk
- Listener berfungsi sebagai webhook/callback untuk notifikasi pembayaran real-time
- Setup ini memastikan bot langsung tahu saat user sudah membayar
Yang akan kamu dapatkan dari tutorial:
- Cara pasang listener/webhook Betabotz
- Konfigurasi callback URL yang benar
- API key yang valid
- Testing untuk memastikan pembayaran terdeteksi
Tanpa setup ini, bot hanya bisa:
- ✅ Membuat invoice pembayaran
- ❌ TIDAK BISA mendeteksi pembayaran otomatis
- ❌ TIDAK BISA mengirim stok otomatis setelah bayar
- Install dependency
npm install- Edit
settings.jslalu isi nilai berikut:
BOT_TOKEN-> token bot TelegramOWNER_ID-> ID Telegram ownerDATABASE_MONGODB_URI-> URI MongoDBbtzKey-> API key Betabotz (dari tutorial setup)btzTimeout-> timeout pembayaran (ms), default900000btzFee-> biaya tambahan (Rp), default0btzMethod-> metode pembayaran (contohqrisgopay)
- Jalankan bot
npm startUntuk mode development:
npm run dev/start-> mulai bot/help-> panduan order/infobot-> info bot
/ownermenu-> panel owner/addproduct-> tambah produk/addvariant-> tambah varian/addstock-> tambah stok/delproduct-> hapus produk/delvariant-> hapus varian/delstock-> hapus stok/setharga-> ubah harga/broadcast-> kirim broadcast
- User pilih produk/varian.
- Bot membuat invoice pembayaran.
- User bayar via metode yang dipilih.
- Listener Betabotz mendeteksi pembayaran dan memberi notifikasi ke bot.
- Bot verifikasi pembayaran sukses.
- Stok dikirim otomatis ke user.
- Jika expired/batal, transaksi ditutup dan stok direfund.
- Jangan pernah share
settings.jske publik. - Jika token/API key sempat bocor, segera rotate:
- regenerate bot token via
@BotFather - ganti API key Betabotz
- ganti password/URI MongoDB
- regenerate bot token via
Handler is undefined:- cek export/import command di
plugins/exportPlugins.js.
- cek export/import command di
409 Conflict: terminated by other getUpdates request:- ada instance bot lain yang masih jalan dengan token sama, matikan dulu proses lama.
- Gagal konek DB:
- pastikan
DATABASE_MONGODB_URIvalid dan IP whitelist MongoDB sesuai.
- pastikan
- Pembayaran tidak terdeteksi otomatis:
⚠️ Pastikan sudah setup listener di https://web.btzpay.my.id/tutorial- Cek apakah webhook/callback URL sudah terkonfigurasi dengan benar
- Test listener dengan melakukan pembayaran percobaan
- Pastikan API key masih valid
- Cek log error di console bot
ISC