Tekil Mesaj gösterimi
Alt 15 Ağustos 2026, 23:59   #4
KivanC Editör
✓
W r i t e r
KivanC - ait Kullanıcı Resmi (Avatar)

Standart

Yenilenmiştir.

HTML-Kodu

; ============================================================
; WHY BOT - İDDAA MODÜLÜ EKİ: !botdurum, !yenile, !canli on/off
; Bu dosya, önceki why_iddaa_mackolik.mrc dosyasının ÜZERİNE
; ek olarak uygulanır. WhyIddaaCanliIsle burada YENİDEN yazıldı
; (gol tespiti eklendiği için) — eski tanımın YERİNE geçer.
;
; KURULUM:
; %tables listesine ekleyin: WhyIddaaAyarlar WhyIddaaOncekiSkor
;
; "böyle bir kanal bulunamadı" hatasının kaynağı: muhtemelen
; # işaretsiz bir kanal adı ya da botun üye olmadığı bir kanala
; mesaj atma denemesiydi. Aşağıdaki !canlikanal komutu artık
; hem # kontrolü hem "bot gerçekten o kanalda mı" kontrolü yapıyor,
; bu yüzden ayar kaydedilmeden hatalı kanal asla kullanılamaz.
; Hatanın tam olarak hangi komuttan geldiğini net biliyorsanız
; (örn. birebir yazdığınız komut) söyleyin, kesin teşhis edeyim.
; ============================================================

; ------------------------------------------------------------
; !botdurum
; ------------------------------------------------------------
on 1:TEXT:/^!botdurum\s*$/i:?: { WhyIddaaBotDurum $nick }
on 1:TEXT:/^!botdurum\s*$/i:#: { WhyIddaaBotDurum $nick }

alias -l WhyIddaaBotDurum {
  var %n = $1
  var %bulten = $hget(WhyIddaaBulten,0).item
  var %canli = $hget(WhyIddaaCanliSkor,0).item
  var %yansitma = $iif($hget(WhyIddaaAyarlar,canliYansitma) == 1,ACIK,KAPALI)
  var %kanal = $iif($hget(WhyIddaaAyarlar,canliKanal),$hget(WhyIddaaAyarlar,canliKanal),ayarlanmadı)
  .msg %n $chr(3) $+ 08[BOT DURUM] $chr(3) $+ 03Bültende $chr(3) $+ 12 %bulten $chr(3) $+ 03maç, canlıda $chr(3) $+ 12 %canli $chr(3) $+ 03maç var.
  .msg %n $chr(3) $+ 03Canlı yansıtma: $chr(3) $+ 12 %yansitma $chr(3) $+ 03| Kanal: $chr(3) $+ 12 %kanal
}

; ------------------------------------------------------------
; !yenile — manuel yenileme, spam önleme için global 30 sn CD
; ------------------------------------------------------------
on 1:TEXT:/^!yenile\s*$/i:?: { WhyIddaaYenile $nick }
on 1:TEXT:/^!yenile\s*$/i:#: { WhyIddaaYenile $nick }

alias -l WhyIddaaYenile {
  var %n = $1
  if ($hget(WhyOpCmdCD,YenileGlobal)) {
    .msg %n $chr(3) $+ 04[YENİLE] $chr(3) $+ 03Az önce yenilendi, birkaç saniye sonra tekrar deneyin.
    return
  }
  hadd -u30 WhyOpCmdCD YenileGlobal 1
  .msg %n Bulten ve canlı skorlar yenileniyor...
  WhyIddaaBultenCek
  WhyIddaaCanliCek
}

; ------------------------------------------------------------
; !canlikanal #kanal — gol bildirimlerinin gideceği kanalı ayarla
; (admin+identify gerektirir, kanal geçerliliğini KONTROL EDER)
; ------------------------------------------------------------
on 1:TEXT:/^!canlikanal\s+(\S+)\s*$/i:?: { WhyIddaaKanalAyarla $nick $regml(1) }
on 1:TEXT:/^!canlikanal\s+(\S+)\s*$/i:#: { WhyIddaaKanalAyarla $nick $regml(1) }

alias -l WhyIddaaKanalAyarla {
  var %nick = $1, %kanal = $2
  if (!$WhyRequireAdminAndIdentify) { return }

  if ($left(%kanal,1) != #) {
    .notice %nick $chr(3) $+ 04[CANLI] $chr(3) $+ 03Kanal adı $chr(3) $+ 14# $chr(3) $+ 03ile başlamalı, örn: $chr(3) $+ 14!canlikanal #sohbet
    return
  }

  if (!$chan(%kanal)) {
    .notice %nick $chr(3) $+ 04[CANLI] $chr(3) $+ 03Bot $chr(3) $+ 12 %kanal $chr(3) $+ 03kanalında değil, önce botu o kanala join ettirin.
    return
  }

  hadd WhyIddaaAyarlar canliKanal %kanal
  .notice %nick $chr(3) $+ 09[CANLI] $chr(3) $+ 03Canlı gol bildirim kanalı: $chr(3) $+ 12 %kanal $chr(3) $+ 03olarak ayarlandı.
  WhyLogAdmin "Canli Kanal Ayarladi" %kanal
}

; ------------------------------------------------------------
; !canli on / !canli off — yansıtma modu (admin+identify gerektirir)
; Kanal ayarlanmadan AÇILAMAZ — "kanal bulunamadı" hatasını önler.
; ------------------------------------------------------------
on 1:TEXT:/^!canli\s+on\s*$/i:?: { WhyIddaaCanliYansitma $nick 1 }
on 1:TEXT:/^!canli\s+on\s*$/i:#: { WhyIddaaCanliYansitma $nick 1 }
on 1:TEXT:/^!canli\s+off\s*$/i:?: { WhyIddaaCanliYansitma $nick 0 }
on 1:TEXT:/^!canli\s+off\s*$/i:#: { WhyIddaaCanliYansitma $nick 0 }

alias -l WhyIddaaCanliYansitma {
  var %nick = $1, %durum = $2
  if (!$WhyRequireAdminAndIdentify) { return }

  if (%durum == 1) {
    var %kanal = $hget(WhyIddaaAyarlar,canliKanal)
    if (!%kanal) {
      .notice %nick $chr(3) $+ 04[CANLI] $chr(3) $+ 03Önce yayın kanalını ayarlayın: $chr(3) $+ 14!canlikanal #kanaladi
      return
    }
    if (!$chan(%kanal)) {
      .notice %nick $chr(3) $+ 04[CANLI] $chr(3) $+ 03Bot artık $chr(3) $+ 12 %kanal $chr(3) $+ 03kanalında değil, yeniden ayarlayın: $chr(3) $+ 14!canlikanal #kanaladi
      return
    }
    hadd WhyIddaaAyarlar canliYansitma 1
    .notice %nick $chr(3) $+ 09[CANLI] $chr(3) $+ 03Canlı maç yansıtma modu AÇILDI. (Goller anlık bildirilecek - Her 60 sn)
  }
  else {
    hadd WhyIddaaAyarlar canliYansitma 0
    .notice %nick $chr(3) $+ 04[CANLI] $chr(3) $+ 03Canlı maç yansıtma modu KAPATILDI.
  }

  WhyLogAdmin $iif(%durum == 1,"Canli Yansitma Actı","Canli Yansitma Kapattı") %nick
}

; ------------------------------------------------------------
; DÜZELTİLMİŞ: WhyIddaaCanliIsle — artık gol tespiti de yapıyor.
; Önceki yamadaki WhyIddaaCanliIsle alias'ının YERİNE geçer.
; ------------------------------------------------------------
alias -l WhyIddaaCanliIsle {
  ; Önceki skorları gol tespiti için sakla
  hfree WhyIddaaOncekiSkor
  hmake WhyIddaaOncekiSkor 200
  if ($hget(WhyIddaaCanliSkor,0).item) {
    var %k = 1
    while (%k <= $hget(WhyIddaaCanliSkor,0).item) {
      hadd WhyIddaaOncekiSkor $hget(WhyIddaaCanliSkor,%k).item $hget(WhyIddaaCanliSkor,%k).data
      inc %k
    }
  }

  var %ham = $hget(WhyIddaaBuffer,WhyIddaaCanliSock)
  hfree WhyIddaaCanliSkor
  hmake WhyIddaaCanliSkor 200

  if (!%ham) { return }
  var %dummy
  var %icerik = $regsub(%ham,/^.*?\r?\n\r?\n/s,,%dummy)

  ; ÖRNEK JSON alan adları — gerçek API'ye göre güncelleyin
  var %sayi = $regex(canli,%icerik,/"code"\s*:\s*"([^"]+)".*?"home"\s*:\s*"([^"]+)".*?"away"\s*:\s*"([^"]+)".*?"homeScore"\s*:\s*"?(\d+)"?.*?"awayScore"\s*:\s*"?(\d+)"?.*?"minute"\s*:\s*"?(\d+)"?/gs)

  if (!%sayi) { return }

  var %grupSayisi = 6
  var %toplam = $regml(canli,0)
  var %i = 1
  while (%i <= %toplam) {
    var %kod = $regml(canli,%i)
    var %ev = $regml(canli,$calc(%i + 1))
    var %dep = $regml(canli,$calc(%i + 2))
    var %evSkor = $regml(canli,$calc(%i + 3))
    var %depSkor = $regml(canli,$calc(%i + 4))
    var %dakika = $regml(canli,$calc(%i + 5))
    hadd WhyIddaaCanliSkor %kod %ev $+ $chr(124) $+ %dep $+ $chr(124) $+ %evSkor $+ $chr(124) $+ %depSkor $+ $chr(124) $+ %dakika
    inc %i %grupSayisi
  }

  WhyIddaaGolKontrolYap
}

; ------------------------------------------------------------
; YENİ: gol kontrolü — skoru artan maç varsa yansıtma açıksa duyur
; ------------------------------------------------------------
alias -l WhyIddaaGolKontrolYap {
  if ($hget(WhyIddaaAyarlar,canliYansitma) != 1) { return }
  var %kanal = $hget(WhyIddaaAyarlar,canliKanal)
  if (!%kanal) { return }
  if (!$chan(%kanal)) { return }

  var %i = 1
  while (%i <= $hget(WhyIddaaCanliSkor,0).item) {
    var %kod = $hget(WhyIddaaCanliSkor,%i).item
    var %veri = $hget(WhyIddaaCanliSkor,%i).data
    var %ev = $gettok(%veri,1,124)
    var %dep = $gettok(%veri,2,124)
    var %evSkor = $gettok(%veri,3,124)
    var %depSkor = $gettok(%veri,4,124)
    var %dakika = $gettok(%veri,5,124)

    if ($hget(WhyIddaaOncekiSkor,%kod)) {
      var %eskiVeri = $hget(WhyIddaaOncekiSkor,%kod)
      var %eskiEvSkor = $gettok(%eskiVeri,3,124)
      var %eskiDepSkor = $gettok(%eskiVeri,4,124)

      if (%evSkor > %eskiEvSkor) || (%depSkor > %eskiDepSkor) {
        .msg %kanal $chr(3) $+ 09⚽ GOL! $chr(3) $+ 12 %ev $chr(3) $+ 03 %evSkor $+ - $+ %depSkor $chr(3) $+ 12 %dep $chr(3) $+ 08( %dakika $+ ')
      }
    }
    inc %i
  }
}

; ------------------------------------------------------------
; !iddaa komut listesine yeni komutları ekleyin (WhyIddaaKomutlari
; alias'ının içine, "!kuponsil" satırından sonra):
;   .msg %n $chr(3) $+ 12!botdurum $chr(3) $+ 03- Bot/veri durumunu göster
;   .msg %n $chr(3) $+ 12!yenile $chr(3) $+ 03- Bülten/canlı skoru elle yenile
;   .msg %n $chr(3) $+ 12!canlikanal #kanal $chr(3) $+ 03- Gol bildirim kanalı ayarla (admin)
;   .msg %n $chr(3) $+ 12!canli on/off $chr(3) $+ 03- Canlı gol yansıtmayı aç/kapa (admin)
; ------------------------------------------------------------

________________

"Sevilmenin kıymeti bilinmiyorsa, Uzaklaşmak En güzeli ki üzülen sen olmayasın"