İçeriğe geç
Örnekler

Deprem botu

Son bir saatte 4 ve üstü deprem olursa Slack’e ya da başka bir webhook’a büyüklük, yer, derinlik ve saatle yazar. Tek istek, AFAD verisi.

  1. Anahtar al. Ücretsiz kayıt, ayda 1.000 kredi. Anahtarı panelde üretirsin; ak_live_ ile başlar.
  2. Dosyayı al. Aşağıdan kopyala ya da indir: deprem.mjs. Node 18 ya da üstü yeter, paket yok.
  3. Çalıştır. KILAVUZ_ANAHTAR=ak_live_… node deprem.mjs. Bot 5 dakikada bir bakar; yeni depremi WEBHOOK_URL’e yollar (Slack ya da {text} alan her webhook), WEBHOOK_URL yoksa terminale yazar.

Tek dosya, olduğu gibi çalışır:

// Deprem botu: son bir saatte 4 ve üstü deprem olursa Slack'e (ya da {text} alan her webhook'a) yazar.
// Node 18+, paket yok.  KILAVUZ_ANAHTAR=ak_live_… WEBHOOK_URL=https://hooks.slack.com/… node deprem.mjs
// WEBHOOK_URL yoksa mesajı terminale yazar. 5 dakikada bir bakar (deprem varsa 1 kredi, yoksa 0);
// aynı depremi iki kez yollamaz. Veri AFAD'dan, resmî uyarı yerine geçmez.
const ANAHTAR = process.env.KILAVUZ_ANAHTAR;
if (!ANAHTAR) throw new Error('KILAVUZ_ANAHTAR tanımlı değil (anahtar: kilavuzapi.com/panel)');
const WEBHOOK = process.env.WEBHOOK_URL;
const url = 'https://api.kilavuzapi.com/v1/deprem/son?saat=1&minBuyukluk=4';
const yollanan = new Set();

async function bak() {
  const r = await fetch(url, { headers: { Authorization: `Bearer ${ANAHTAR}` } });
  const { depremler, hata } = await r.json();
  if (!r.ok) return console.error(r.status, hata);

  for (const d of depremler) {
    if (yollanan.has(d.id)) continue;
    const mesaj = `M${d.buyukluk} · ${d.yer} · ${d.derinlikKm} km · ${d.zamanTr.slice(11, 16)}`;
    if (WEBHOOK) {
      await fetch(WEBHOOK, {
        method: 'POST',
        headers: { 'content-type': 'application/json' },
        body: JSON.stringify({ text: mesaj }),
      });
    } else console.log(mesaj);
    // Yollanamazsa (ağ hatası) işaretlenmez, sonraki turda yeniden denenir.
    yollanan.add(d.id);
  }
}

const tur = () => bak().catch((e) => console.error(e.message));
tur();
setInterval(tur, 5 * 60_000);

Kullandığı uçlar

  • GET /v1/deprem/son1 kredi

Anahtar yalnız bu sürecin ortam değişkeninde durur; koda yazma. Uçların ayrıntısı dokümanda.

Öteki örnekler