🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Prayer Times Id

by @zckyachmd

Menjadwalkan reminder waktu shalat (Indonesia) ke OpenClaw System Event berdasarkan lokasi, lengkap dengan quote harian Islami dan status Ramadan otomatis.

Versionv1.0.3
Downloads974
Stars⭐ 1
TERMINAL
clawhub install prayer-times-id

πŸ“– About This Skill


name: prayer-times-id description: Menjadwalkan reminder waktu shalat (Indonesia) ke OpenClaw System Event berdasarkan lokasi, lengkap dengan quote harian Islami dan status Ramadan otomatis.

prayer-times-id

Skill ini menjalankan engine Node.js untuk: 1. mengambil jadwal shalat harian dari AlAdhan API, 2. menentukan status Ramadan (otomatis/manual), 3. membuat one-shot cron job OpenClaw untuk setiap waktu shalat yang belum lewat, 4. mengirim pesan reminder berformat rapi dengan quote harian.

Struktur File

  • engine.js β€” engine utama penjadwalan reminder.
  • prayer_config.json β€” konfigurasi lokasi + pengaturan perhitungan.
  • quotes_id.json β€” kumpulan quote Islami berbahasa Indonesia.
  • Dependensi

  • Node.js 18+ (disarankan 20+)
  • OpenClaw CLI tersedia di PATH (openclaw)
  • Akses internet ke:
  • - https://api.aladhan.com/v1/timings - https://api.aladhan.com/v1/gToH

    Konfigurasi

    Edit prayer_config.json:

    {
      "location": {
        "name": "Cimahi",
        "latitude": -6.8722,
        "longitude": 107.5427,
        "expires": "2026-03-02"
      },
      "settings": {
        "auto_ramadan": true,
        "manual_override": null,
        "method": 11,
        "timezone": "Asia/Jakarta"
      },
      "sources": {
        "quotes_enabled": true,
        "current_day_source": "local"
      }
    }
    

    Keterangan penting:

  • location.name: label lokasi yang tampil di pesan.
  • latitude / longitude: koordinat lokasi.
  • settings.method: metode kalkulasi AlAdhan.
  • settings.timezone: timezone IANA (contoh Asia/Jakarta).
  • settings.auto_ramadan: deteksi Ramadan otomatis dari tanggal Hijriah.
  • settings.manual_override: true/false untuk override status Ramadan; null untuk otomatis.
  • Cara Menjalankan

    Dari folder skill:

    node engine.js --dry-run
    

  • Tidak menulis cron job, hanya simulasi output JSON.
  • node engine.js
    

  • Menambahkan cron one-shot ke OpenClaw untuk waktu shalat hari ini yang belum lewat.
  • Output

    Engine mengeluarkan JSON ringkas, contoh:

  • status: hasil eksekusi
  • dryRun: mode simulasi atau real
  • location, timezone, ramadan
  • registered: jumlah job yang berhasil dijadwalkan
  • jobs[]: detail job per waktu shalat
  • Keamanan & Kepatuhan

  • Tidak ada hardcoded secret/token/api key.
  • Tidak ada hardcoded private/public IP.
  • Eksekusi CLI memakai execFileSync (tanpa shell command interpolation) untuk meminimalkan risiko command injection.
  • Penjadwalan job memakai openclaw cron add --at ... --system-event ... secara langsung (tanpa nested command / shell-style job string).
  • Input konfigurasi divalidasi (nama lokasi, koordinat, metode).
  • Input user location.name sekarang disanitasi untuk keamanan (hanya alphanumeric, spasi, dan -).
  • Request API dibatasi timeout (AbortSignal.timeout) agar tidak hang.
  • Catatan Operasional

  • Engine hanya menjadwalkan reminder hari berjalan; jalankan ulang harian (mis. via scheduler induk) untuk generate jadwal hari berikutnya.
  • Engine hanya menggunakan mode modern OpenClaw Cron (--at + --system-event) dan tidak lagi menyediakan fallback legacy berbasis --job 'at ...'.