2025-10-08
admin
Diperbarui 2025-10-11

Bot Presensi WhatsApp: Solusi Absensi GPS Karyawan Multi Kantor

Sederhanakan absensi karyawan Anda dengan WhatsApp! Bot presensi GPS otomatis, mendukung banyak kantor, laporan lengkap, dan mudah diintegrasikan. Tingkatkan efisiensi sekarang!
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:

  1. Kirim Lokasi GPS - Untuk check in/out otomatis
  2. /status - Cek status presensi hari ini
  3. /offices - Lihat kantor terdaftar
  4. /help - Bantuan karyawan

Alur Presensi:

  1. Karyawan kirim lokasi GPS
  2. Bot validasi jarak dengan kantor terdekat
  3. Jika dalam radius: presensi berhasil
  4. Jika diluar radius: presensi ditolak
  5. Notifikasi dikirim ke admin

🗂️ Struktur Database

Tabel offices

  • id - ID kantor
  • name - Nama kantor
  • latitude - Latitude GPS
  • longitude - Longitude GPS
  • radius - Radius presensi (meter)

Tabel employees

  • id - ID karyawan
  • phone - Nomor WhatsApp
  • name - Nama karyawan
  • office_id - ID kantor
  • is_admin - Status admin (0/1)
  • is_active - Status aktif (0/1)

Tabel attendance

  • id - ID presensi
  • employee_id - ID karyawan
  • office_id - ID kantor
  • type - Jenis (check_in/check_out)
  • latitude - Latitude GPS
  • longitude - Longitude GPS
  • distance - Jarak dari kantor (meter)
  • timestamp - Waktu presensi
  • date - 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

  1. Hapus folder ./session/
  2. Restart bot
  3. Scan QR code lagi

Database Error

  1. Cek permissions file
  2. Pastikan SQLite3 terinstall
  3. Cek disk space

GPS Tidak Akurat

  1. Pastikan GPS aktif di HP
  2. Tunggu signal GPS stabil
  3. 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

  1. Stop bot (Ctrl+C)
  2. Update file bot
  3. 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

blog teknologi programming web-development admin

Artikel Terkait