Prayer Times Id

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

Audits

Pass

Install

openclaw skills install prayer-times-id

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 ...'.