Bot Discord untuk sistem absensi otomatis pada platform e-learning SIMA UNSIQ dengan fitur auto-login, OCR CAPTCHA solving, dan notifikasi real-time.
- Auto-Login - Login otomatis dengan OCR CAPTCHA solving
- Auto-Absen - Absensi mandiri otomatis pada materi baru
- Real-time Notifications - Notifikasi Discord untuk materi baru & absensi
- Statistics Tracking - Statistik kehadiran dan aktivitas
- Data Encryption - Enkripsi AES-256-GCM untuk data sensitif
- Scheduled Checks - Pengecekan berkala setiap 10 menit
- User Install Support - Dapat digunakan di mana saja (DM/Server)
- Node.js >=
24.0.0/latest - npm or yarn
- Discord Bot Token with User Install enabled
git clone https://github.com/zuna107/SIMA-Auto-Absen-Bot.git
cd SIMA-Auto-Absen-Botnpm installCopy .env.example menjadi .env dan isi dengan data mu:
cp .env.example .envEdit .env:
DISCORD_TOKEN=your_discord_bot_token_here
CLIENT_ID=your_bot_client_id
OWNER_ID=your_discord_user_id
ENCRYPTION_KEY=your-secure-32-character-minimum-key
NODE_ENV=production- Buka Discord Developer Portal
- Buat aplikasi baru atau gunakan yang sudah ada
- Pada tab Bot, aktifkan bot dan copy token
- Pada tab Installation:
- Enable User Install
- Set scopes:
applications.commands - Copy Install Link dan authorize.
- Masuk tab Bot enable key:
- Public Bot
- Presence Intent
- Server Members Intent
- Message Content Intent
npm startUntuk development dengan auto-reload:
npm run devsima-absen-bot/
├── commands/ # Slash commands
│ ├── absen.js # Registration command
│ └── status.js # Status check command
├── connection/ # SIMA web interactions
│ ├── simaClient.js # Main SIMA client
│ └── userManager.js # User data management
├── handlers/ # Event & command handlers
│ └── commandsHandler.js
├── services/ # Background services
│ ├── scheduler.js # Cron job scheduler
│ └── notifier.js # Discord notifications
├── utils/ # Utilities
│ └── logger.js # Logging system
├── public/ # Data storage
│ ├── user.json # User data (encrypted)
│ ├── lastMateri.json # Material cache
│ └── logs/ # Log files
├── config.js # Configuration
├── index.js # Main entry point
├── package.json
└── .env # Environment variables
Mendaftarkan akun SIMA untuk sistem absensi otomatis.
Flow:
- User menjalankan
/absen - Bot menampilkan modal form
- User memasukkan NIM dan password
- Bot melakukan login dan verifikasi
- Data disimpan dengan enkripsi
- Sistem mulai monitoring
Melihat status akun dan statistik absensi.
Informasi yang ditampilkan:
- Status akun (aktif/nonaktif)
- NIM dan username
- Waktu registrasi dan aktivitas
- Statistik (total cek, absensi, success rate)
- Konfigurasi sistem
Edit config.js untuk mengubah konfigurasi:
// Discord configuration
token: process.env.DISCORD_TOKEN,
//masuk ke tab General Information pada Discord Developer Portal, copy Application ID
clientId: process.env.CLIENT_ID || 'ISI_DENGAN_ID_BOT',
ownerId: process.env.OWNER_ID || 'ID_DISCORD_ACCOUNT', //ID akun discord mu//jika ingin mengubah durasi pengecekan
scheduler: {
interval: 10, // Check every 10 minutes
cronExpression: '*/10 * * * *',
}- Password dan cookies dienkripsi menggunakan AES-256-GCM
- Encryption key disimpan di environment variable
- Auth tag untuk verifikasi integritas data
- Cookie session disimpan dan di-refresh otomatis
- Auto re-login jika session expired
- Timeout protection
User → /absen → Modal Form → Login Attempt → OCR CAPTCHA
→ Verify Login → Save Data → Start Monitoring
Scheduler (10 min) → Check All Active Users
→ Fetch Makul → Fetch Materi → Compare with Cache
→ If New Materi → Send Notification → Auto Absen (if applicable)
→ Verify Absen → Update Stats → Save Cache
New Materi Detected → Check Type (Manual/Self)
→ If Self & Active → Access Discussion Page
→ Verify in Absen List → Send Success Notification
- Pastikan NIM dan password benar
- Check internet connection
- Lihat logs di
public/logs/
- Tesseract.js memiliki akurasi ~80-90%
- System akan retry hingga 3x
- Jika terus gagal, mungkin format CAPTCHA berubah
- Check cookie expiration time
- Pastikan sistem tidak diblokir oleh SIMA
- Gunakan random delays untuk menghindari rate limit
- Bot akan otomatis leave saat ditambahkan ke server
- Ini untuk memastikan bot hanya digunakan via User Install
Log file disimpan di public/logs/ jika ingin peninjauan lebih lanjut.
Log otomatis di-cleanup setelah 1 hari.
Log levels:
INFO- Informasi umumSUCCESS- Operasi berhasilWARN- Warning/peringatanERROR- Error/kesalahanDEBUG- Debug info (hanya di development)
- Implementasikan random delays antara requests
- Jangan terlalu sering melakukan requests
- Default: 1-3 detik random delay
- Cookies disimpan terenkripsi
- Auto-refresh saat expired
- Session timeout: 1 jam default
- Password dienkripsi dengan AES-256-GCM
- Data tidak pernah di-log dalam plaintext
- Hanya user yang bisa akses datanya sendiri
git pull
npm install
npm startLogs otomatis di-cleanup, atau manual:
Linux:
rm -rf public/logs/*.logWindows:
del /S /Q public\logs\*.logcp public/user.json public/user.json.backupContributions are welcome! Please:
- Fork repository
- Create feature branch
- Commit changes
- Push to branch
- Create Pull Request
MIT License - see LICENSE file
Jika mengalami masalah:
- Check logs di
public/logs/ - Check console output
- Buat issue di GitHub: Issue
- Contact developer: zetsuna0447 on discord
- Pastikan koneksi internet stabil
- Monitor memory usage (penggunaan Tesseract.js)
- Clean old data secara berkala
- Web dashboard untuk monitoring
- Multi-account support
- Multi Lang
- Advanced statistics & analytics
- Custom notification settings
- Webhook integration
- API endpoint
- Mobile app [WPA]
If you need technical support, please contact me via Discord: zetsuna0447