Bot Presensi WhatsApp: Solusi Absensi GPS Karyawan Multi Kantor

WhatsApp Attendance Bot
Bot WhatsApp untuk sistem presensi karyawan berbasis lokasi GPS dengan dukungan multi kantor.
🚀 Fitur Utama
- ✅ Presensi Berbasis Lokasi GPS - Validasi jarak dengan kantor
- 🏢 Multi Kantor - Mendukung banyak lokasi kantor
- 👑 Admin Panel - Manajemen karyawan dan kantor
- 📊 Laporan Lengkap - Laporan harian dan periodic
- 🔐 Keamanan - Validasi radius dan hak akses
- ⏰ Auto Report - Laporan otomatis setiap hari
- 💾 Database SQLite - Penyimpanan data lokal
- 🔄 Auto Backup - Backup database otomatis
📋 Requirements
- Node.js >= 16.0.0
- NPM atau Yarn
- Ubuntu VPS (recommended)
- WhatsApp account untuk bot
🛠️ Instalasi
1. Clone dan Setup
# Clone project atau copy file mkdir whatsapp-attendance-bot cd whatsapp-attendance-bot # Copy file attendance-bot.js dan package.json ke folder ini # Install dependencies npm install
2. Konfigurasi
Edit file attendance-bot.js
dan sesuaikan:
const ADMIN_NUMBER = '[email protected]' // Nomor admin const TIMEZONE = 'Asia/Jakarta' // Timezone
3. Jalankan Bot
# Development npm run dev # Production npm start
4. Scan QR Code
- Bot akan generate QR Code
- Scan dengan WhatsApp yang akan dijadikan bot
- Bot siap digunakan!
📱 Cara Penggunaan
Untuk Admin (6281241314446)
Perintah Admin:
/help
- Bantuan admin/offices
- Lihat daftar kantor/addoffice Nama, Latitude, Longitude, Radius
- Tambah kantor/employees
- Lihat daftar karyawan/addemployee Nomor, Nama, ID_Kantor
- Tambah karyawan/report YYYY-MM-DD YYYY-MM-DD [office_id]
- Laporan presensi/today
- Presensi hari ini
Contoh Penggunaan Admin:
/addoffice Kantor Jakarta, -6.200000, 106.816666, 100 /addemployee 628123456789, John Doe, 1 /report 2024-01-01 2024-01-31 /today
Untuk Karyawan
Presensi:
- Kirim Lokasi GPS - Untuk check in/out otomatis
/status
- Cek status presensi hari ini/offices
- Lihat kantor terdaftar/help
- Bantuan karyawan
Alur Presensi:
- Karyawan kirim lokasi GPS
- Bot validasi jarak dengan kantor terdekat
- Jika dalam radius: presensi berhasil
- Jika diluar radius: presensi ditolak
- Notifikasi dikirim ke admin
🗂️ Struktur Database
Tabel offices
id
- ID kantorname
- Nama kantorlatitude
- Latitude GPSlongitude
- Longitude GPSradius
- Radius presensi (meter)
Tabel employees
id
- ID karyawanphone
- Nomor WhatsAppname
- Nama karyawanoffice_id
- ID kantoris_admin
- Status admin (0/1)is_active
- Status aktif (0/1)
Tabel attendance
id
- ID presensiemployee_id
- ID karyawanoffice_id
- ID kantortype
- Jenis (check_in/check_out)latitude
- Latitude GPSlongitude
- Longitude GPSdistance
- Jarak dari kantor (meter)timestamp
- Waktu presensidate
- Tanggal presensi
⚙️ Konfigurasi Lanjutan
Mengubah Radius Kantor
UPDATE offices SET radius = 200 WHERE id = 1;
Menambah Admin Baru
UPDATE employees SET is_admin = 1 WHERE phone = '628123456789';
Backup Manual Database
cp attendance.db backup_manual_$(date +%Y%m%d_%H%M%S).db
📊 Fitur Laporan
Laporan Harian Otomatis
- Dikirim setiap hari jam 18:00
- Berisi ringkasan presensi hari ini
- Dikirim ke nomor admin
Laporan Custom
/report 2024-01-01 2024-01-31 # Semua kantor /report 2024-01-01 2024-01-31 1 # Kantor ID 1 saja
🔒 Keamanan
- Validasi jarak GPS dengan toleransi radius
- Hanya karyawan terdaftar yang bisa presensi
- Admin panel terproteksi
- Log aktivitas lengkap
- Auto backup database
📝 Log Files
./logs/attendance.log
- Log aktivitas bot./attendance.db
- Database SQLite./session/
- Session WhatsApp./backup_*.db
- File backup otomatis
🐛 Troubleshooting
Bot Tidak Connect
- Hapus folder
./session/
- Restart bot
- Scan QR code lagi
Database Error
- Cek permissions file
- Pastikan SQLite3 terinstall
- Cek disk space
GPS Tidak Akurat
- Pastikan GPS aktif di HP
- Tunggu signal GPS stabil
- Coba di area terbuka
🔄 Update dan Maintenance
Backup Rutin
Bot otomatis backup setiap 24 jam. File backup tersimpan dengan format: backup_YYYY-MM-DD_HH-mm-ss.db
Update Bot
- Stop bot (Ctrl+C)
- Update file bot
- Restart:
npm start
Monitoring
# Lihat log real-time tail -f logs/attendance.log # Check database sqlite3 attendance.db ".tables"
📞 Support
Untuk bantuan teknis:
- Cek log file di
./logs/attendance.log
- Pastikan semua dependencies terinstall
- Cek koneksi internet dan WhatsApp
📄 License
MIT License - Bebas digunakan dan dimodifikasi.
Developed with ❤️ for efficient attendance management