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)
; ------------------------------------------------------------