IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi  
 sohbet
seviyeli sohbet


mIRC Scripting Hazır Kodlar mIRC Scriptinglerinizde kullanabileceğiniz hazır kodlara bu başlık altından ulaşabilirsiniz.

🎙️ LAFZONA Sesli ve görüntülü konuşma • İnteraktif yayıncılık • Müzik ve sohbet bir arada Katıl →
 
Seçenekler Stil
Alt 23 Ağustos 2026, 23:37   #1
W r i t e r
KivanC - ait Kullanıcı Resmi (Avatar)

Standart İnsansı Live Sohbet Botu [Ai/Web]

📌 Açıklama

İNSAN AI BOT, mIRC için geliştirilmiş, nazik, kibar, romantik ve saygılı kişiliğe sahip, gelişmiş bir sohbet botudur. Gerçek bir insan gibi davranır, kanalın havasını öğrenir, uzun süreli hafızası vardır ve asla bot olduğunu belli etmez.

---

🚀 ÖZELLİKLER

🧠 Gelişmiş Yapay Zeka

· Groq API ile güçlü AI desteği (Llama 3.3 70B)
· Yedek AI sistemi (OpenRouter vb.) - Ana AI çalışmazsa otomatik geçiş
· Akıllı karar mekanizması - Kanal sessizse kendiliğinden konuşur

💬 Güçlü Hafıza Sistemi

· Kanal hafızası - Son 10 konuşmayı hatırlar
· Kişisel hafıza - Her kullanıcıyla olan özel konuşmaları saklar
· Konuşma özeti - Her kullanıcı hakkında kısa özet tutar
· Not sistemi - Kullanıcılar hakkında özel notlar alır
· "Seen" sistemi - Kullanıcıların en son ne zaman, nerede ve ne yazdığını hatırlar

🎭 Dinamik Karakter Sistemi

· Rastgele oluşturulan kişilik: İsim, yaş, şehir, meslek, burç, takım
· Ruh hali değişimi: Saate göre enerjik, çalışkan, yorgun, rahat, uykulu
· Her gün otomatik karakter değişimi (isteğe bağlı)
· Kanal stil öğrenme - Bulunduğu kanalın konuşma tarzını analiz eder

🎮 Oyun Modu

· Kelime oyunu - Harf verilir, bot kelime türetir
· Trivia - Karışık harfli soruları çözer
· OXM (Scramble) - Verilen harflerle en uzun kelimeyi bulur
· Zar oyunu - Diğer kullanıcılarla zar atma oyunu

🎵 Radyo Sistemi

· Otomatik radyo isteği - Belirli aralıklarla şarkı önerir
· Pop, Arabesk, Rap türlerinde istek yapabilir
· Tekrar engelleme - Aynı şarkıyı tekrar söylemez
· Radyo geçmişi - Son 10 isteği hatırlar

🌐 Web Entegrasyonu

· Hava durumu - Botun bulunduğu şehrin anlık hava durumu
· Haberler - Türkiye'den güncel haber başlıkları
· Wikipedia - Sorulan konu hakkında kısa bilgi

🛡️ Güvenlik & Koruma

· Flood engelleme - Aynı kullanıcının çok hızlı mesaj atmasını engeller
· Aynı soru engelleme - Tekrar eden sorulara cevap vermez
· Küfür ve argo filtresi - Bot asla küfür etmez, argo kullanmaz
· Owner sistemi - Sadece yetkili kişiler botu yönetebilir

📊 Ek Özellikler

· Kanal takibi - Kanalda kimlerin konuştuğunu takip eder
· Sessizlik kontrolü - Kanal çok sessizse otomatik selam verir
· Özel mesaj desteği - Ownerlara özel yönetim komutları
· Otomatik nick değişimi - Karakter değişince nick de değişir
· Menu desteği - mIRC menüsünden kolay kontrol

---

📋 KURULUM

1️⃣ Gereksinimler

· mIRC 7.35 veya üzeri
· SSL desteği (sockopen -e kullanılıyor)
· Groq API anahtarı (ücretsiz: groq.com)
· (Opsiyonel) OpenRouter API anahtarı
· (Opsiyonel) OpenWeatherMap API anahtarı
· (Opsiyonel) NewsAPI anahtarı

2️⃣ Kurulum Adımları

1. Dosyayı . remotes dosyası olarak kaydedin (örn: insan_bot.mrc)
2. mIRC'de ALT+R ile Remote Editor'ü açın
3. File → Load ile dosyayı yükleyin
4. Veya dosyayı direkt mIRC klasörüne atıp /load -rs insan_bot.mrc yazın

3️⃣ API Anahtarlarını Girin

alias ayarlar bölümündeki şu satırları düzenleyin:

```mirc
; Groq API (Zorunlu)
hadd ayarlar ai_api_key BURAYA_GROQ_API_KEY_YAZ

; Yedek API (Opsiyonel)
hadd ayarlar ai2_api_key BURAYA_YEDEK_API_KEY_YAZ

; Hava Durumu (Opsiyonel)
hadd ayarlar hava_api BURAYA_OPENWEATHER_API_KEY_YAZ

; Haberler (Opsiyonel)
hadd ayarlar news_api BURAYA_NEWSAPI_KEY_YAZ
```

4️⃣ Sunucu ve Kanal Ayarları

```mirc
; Bağlantı ayarı (START event'inde)
.timerBaglan 1 4 server irc.deneme.net 6667

; Kanal ayarı
hadd ayarlar kanallar #Sohbet
```

5️⃣ Owner (Sahip) Ayarları

```mirc
alias varsayilan_ownerlar return Kıvanç|Admin|Boss|Sahip
```

Nick'inizi bu listeye ekleyin veya ilk çalıştırmadan sonra ownerler.hsh dosyasını düzenleyin.



HTML-Kodu

; ============================================================
;  İNSAN AI BOT - FINAL VERSİYON 2026
;  Nazik • Kibar • Romantik • Saygılı
;  Güçlü Hafıza + Kanal Tarzı Öğrenme + Radyo Geçmişi
;  Çoklu AI Yedekleme + Akıllı Otomatik Karar
;  mIRC 7.35+
; ============================================================

alias isim_listesi return Aylin|Defne|Ece|Zeynep|Merve|Selin|Ceren|Büşra|Elif|İrem|Melisa|Sude|Aleyna|Eylül|Lara|Derya|Özge|Aslı|Hande|Burcu|Seda|Pınar|Deniz|İlayda
alias sehir_listesi return İstanbul|Ankara|İzmir|Bursa|Antalya|Trabzon|Erzurum|Adana|Gaziantep|Konya|Samsun|Diyarbakır|Eskişehir|Mersin
alias meslek_listesi return öğretmen|mühendis|pazarlama uzmanı|tasarımcı|muhasebeci|doktor|avukat|yazılımcı|hemşire|mimar|grafiker|psikolog
alias burc_listesi return Koç|Boğa|İkizler|Yengeç|Aslan|Başak|Terazi|Akrep|Yay|Oğlak|Kova|Balık
alias takim_listesi return Fenerbahçe|Galatasaray|Beşiktaş|Trabzonspor
alias varsayilan_ownerlar return Kıvanç|Admin|Boss|Sahip

on *:START:{
  if ($hget(ayarlar) == $null) hmake ayarlar 50
  if ($hget(sohbet_hafiza) == $null) hmake sohbet_hafiza 100
  if ($hget(ayni_soru) == $null) hmake ayni_soru 150
  if ($hget(son_cevap) == $null) hmake son_cevap 50
  if ($hget(ai_baglanti) == $null) hmake ai_baglanti 150
  if ($hget(web_bag) == $null) hmake web_bag 80
  if ($hget(tekrar_engel) == $null) hmake tekrar_engel 50
  if ($hget(kanal_iz) == $null) hmake kanal_iz 100
  if ($hget(kullanici_not) == $null) hmake kullanici_not 150
  if ($hget(son_gorulme) == $null) hmake son_gorulme 250
  if ($hget(flood_engel) == $null) hmake flood_engel 120
  if ($hget(karakter) == $null) hmake karakter 40
  if ($hget(web_veri) == $null) hmake web_veri 60
  if ($hget(oyun_mod) == $null) hmake oyun_mod 50
  if ($hget(oyun_sonharf) == $null) hmake oyun_sonharf 40
  if ($hget(oyun_kelime) == $null) hmake oyun_kelime 400
  if ($hget(trivia_hafiza) == $null) hmake trivia_hafiza 200
  if ($hget(zar_oyun) == $null) hmake zar_oyun 30
  if ($hget(radyo) == $null) hmake radyo 30
  if ($hget(radyo_gecmis) == $null) hmake radyo_gecmis 30
  if ($hget(uzun_hafiza) == $null) hmake uzun_hafiza 300
  if ($hget(oyun_hafiza) == $null) hmake oyun_hafiza 250
  if ($hget(konusma_ozet) == $null) hmake konusma_ozet 150
  if ($hget(kanal_stil) == $null) hmake kanal_stil 80
  if ($hget(stil_ornek) == $null) hmake stil_ornek 120

  if ($hget(ownerler) == $null) {
    hmake ownerler 20
    if ($isfile($qt($scriptdirfile(ownerler.hsh)))) hload ownerler $qt($scriptdirfile(ownerler.hsh))
    else {
      var %o = $varsayilan_ownerlar , %i = 1
      while (%i <= $numtok(%o,124)) {
        hadd ownerler $lower($gettok(%o,%i,124)) $gettok(%o,%i,124)
        inc %i
      }
      hsave -o ownerler $qt($scriptdirfile(ownerler.hsh))
    }
  }

  ; Dosya yüklemeleri
  var %dosyalar = ayarlar|kullanici_not|son_gorulme|karakter|oyun_mod|oyun_kelime|trivia_hafiza|radyo|radyo_gecmis|uzun_hafiza|oyun_hafiza|konusma_ozet|kanal_stil|stil_ornek
  var %i = 1
  while (%i <= $numtok(%dosyalar,124)) {
    var %d = $gettok(%dosyalar,%i,124)
    if (!$isfile($qt($scriptdirfile(%d $+ .hsh)))) hsave -o %d $qt($scriptdirfile(%d $+ .hsh))
    else hload %d $qt($scriptdirfile(%d $+ .hsh))
    inc %i
  }

  ; === AYARLAR ===
  if ($hget(ayarlar,ai_api_key) == $null) hadd ayarlar ai_api_key BURAYA_GROQ_API_KEY_YAZ
  if ($hget(ayarlar,ai_host) == $null) hadd ayarlar ai_host api.groq.com
  if ($hget(ayarlar,ai_model) == $null) hadd ayarlar ai_model llama-3.3-70b-versatile
  if ($hget(ayarlar,ai2_api_key) == $null) hadd ayarlar ai2_api_key BURAYA_YEDEK_API_KEY_YAZ
  if ($hget(ayarlar,ai2_host) == $null) hadd ayarlar ai2_host openrouter.ai
  if ($hget(ayarlar,ai2_model) == $null) hadd ayarlar ai2_model meta-llama/llama-3.1-8b-instruct:free
  if ($hget(ayarlar,ai_aktif) == $null) hadd ayarlar ai_aktif 1
  if ($hget(ayarlar,hava_api) == $null) hadd ayarlar hava_api BURAYA_OPENWEATHER_API_KEY_YAZ
  if ($hget(ayarlar,news_api) == $null) hadd ayarlar news_api BURAYA_NEWSAPI_KEY_YAZ
  if ($hget(ayarlar,kanallar) == $null) hadd ayarlar kanallar #Sohbet
  if ($hget(radyo,otomatik) == $null) hadd radyo otomatik 1

  if ($hget(karakter,isim) == $null) karakter_olustur

  .timerBaglan 1 4 server irc.deneme.net 6667
  .timerIsim 0 18000 isim_degistir
  .timerSessiz 0 280 sessiz_kontrol
  .timerWeb 0 3600 web_veri_guncelle
  .timerKarakter 0 86400 karakter_degistir
  .timerRutin 0 1800 ruh_hali_guncelle
  .timerRadyo 0 3600 radyo_otomatik
  .timerKarar 0 240 akilli_karar_sistemi

  isim_degistir
  ruh_hali_guncelle
  web_veri_guncelle

  echo -a ✅ İNSAN AI BOT FINAL HAZIR → $hget(karakter,isim) (Nazik • Kibar • Romantik • Saygılı)
}

on *:CONNECT:{
  if ($hget(ayarlar,ana_cid) == $null) hadd ayarlar ana_cid $cid
  bot_giris
}

alias bot_giris {
  var %np = $hget(ayarlar,nick_pass)
  if (%np != $null) {
    nickserv IDENTIFY %np
    msg NickServ IDENTIFY %np
  }
  .timer 1 3 {
    var %k = $hget(ayarlar,kanallar) , %i = 1
    while (%i <= $numtok(%k,124)) {
      join $gettok(%k,%i,124)
      inc %i
    }
  }
}

alias karakter_olustur {
  hadd karakter isim $gettok($isim_listesi,$rand(1,$numtok($isim_listesi,124)),124)
  hadd karakter sehir $gettok($sehir_listesi,$rand(1,$numtok($sehir_listesi,124)),124)
  hadd karakter yas $rand(23,34)
  hadd karakter meslek $gettok($meslek_listesi,$rand(1,$numtok($meslek_listesi,124)),124)
  hadd karakter burc $gettok($burc_listesi,$rand(1,$numtok($burc_listesi,124)),124)
  hadd karakter takim $gettok($takim_listesi,$rand(1,$numtok($takim_listesi,124)),124)
  hsave -o karakter $qt($scriptdirfile(karakter.hsh))
}

alias karakter_degistir {
  karakter_olustur
  web_veri_guncelle
  echo -a 🔄 Yeni karakter: $hget(karakter,isim)
}

alias isim_degistir nick $hget(karakter,isim)

alias ruh_hali_guncelle {
  var %saat = $time(HH)
  if (%saat >= 0 && %saat <= 6) hadd ayarlar ruh_hali uykulu
  elseif (%saat >= 7 && %saat <= 11) hadd ayarlar ruh_hali enerjik
  elseif (%saat >= 12 && %saat <= 15) hadd ayarlar ruh_hali çalışkan
  elseif (%saat >= 16 && %saat <= 19) hadd ayarlar ruh_hali yorgun
  else hadd ayarlar ruh_hali rahat
}

alias is_owner return $iif($hget(ownerler,$lower($1)),$true,$false)
alias ayar_kaydet hsave -o ayarlar $qt($scriptdirfile(ayarlar.hsh))
alias not_kaydet hsave -o kullanici_not $qt($scriptdirfile(kullanici_not.hsh))
alias seen_kaydet hsave -o son_gorulme $qt($scriptdirfile(son_gorulme.hsh))
alias oyun_kaydet hsave -o oyun_mod $qt($scriptdirfile(oyun_mod.hsh))
alias oyun_kelime_kaydet hsave -o oyun_kelime $qt($scriptdirfile(oyun_kelime.hsh))
alias trivia_kaydet hsave -o trivia_hafiza $qt($scriptdirfile(trivia_hafiza.hsh))
alias radyo_kaydet hsave -o radyo $qt($scriptdirfile(radyo.hsh))
alias radyo_gecmis_kaydet hsave -o radyo_gecmis $qt($scriptdirfile(radyo_gecmis.hsh))
alias uzun_hafiza_kaydet hsave -o uzun_hafiza $qt($scriptdirfile(uzun_hafiza.hsh))
alias oyun_hafiza_kaydet hsave -o oyun_hafiza $qt($scriptdirfile(oyun_hafiza.hsh))
alias konusma_ozet_kaydet hsave -o konusma_ozet $qt($scriptdirfile(konusma_ozet.hsh))
alias stil_kaydet hsave -o kanal_stil $qt($scriptdirfile(kanal_stil.hsh))
alias stil_ornek_kaydet hsave -o stil_ornek $qt($scriptdirfile(stil_ornek.hsh))

alias json_escape {
  var %t = $1-
  %t = $replace(%t,\,\\,",\", $crlf,$chr(32), $cr,$chr(32), $lf,$chr(32))
  return %t
}

alias gecikmeli_yanit {
  hadd -m son_cevap $1 $ctime
  .timer 1 $2 msg $1 $3-
}

; ==================== GÜÇLÜ HAFIZA ====================
alias hafiza_ekle {
  var %hedef = $1 , %nick = $2 , %mesaj = $left($3-,90)
  var %satir = %nick $+ : %mesaj
  var %eski = $hget(sohbet_hafiza,%hedef)
  var %yeni = $iif(%eski == $null,%satir,$addtok(%eski,%satir,15))
  if ($numtok(%yeni,15) > 10) %yeni = $deltok(%yeni,1,$calc($numtok(%yeni,15) - 10),15)
  hadd -m sohbet_hafiza %hedef %yeni
  hafiza_guclu_ekle %hedef %nick %mesaj
  konusma_ozet_guncelle %nick %mesaj
}

alias hafiza_guclu_ekle {
  var %hedef = $1 , %nick = $2 , %mesaj = $left($3-,120)
  var %key = %hedef $+ . $+ $lower(%nick)
  var %eski = $hget(uzun_hafiza,%key)
  var %yeni = $iif(%eski == $null,%mesaj,$addtok(%eski,%mesaj,15))
  if ($numtok(%yeni,15) > 12) %yeni = $deltok(%yeni,1,$calc($numtok(%yeni,15) - 12),15)
  hadd uzun_hafiza %key %yeni
  if ($calc($hget(uzun_hafiza,0).item % 9) == 0) uzun_hafiza_kaydet
}

alias konusma_ozet_guncelle {
  var %nick = $lower($1) , %mesaj = $2-
  var %eski = $hget(konusma_ozet,%nick)
  var %yeni = $iif(%eski == $null,$left(%mesaj,80),$left(%eski $+ $chr(32) $+ | $+ $chr(32) $+ $left(%mesaj,60),200))
  hadd konusma_ozet %nick %yeni
  if ($calc($hget(konusma_ozet,0).item % 11) == 0) konusma_ozet_kaydet
}

alias oyun_hafiza_ekle {
  var %tur = $1 , %soru = $2 , %cevap = $3
  var %hash = $sha1(%soru)
  hadd oyun_hafiza %tur $+ . $+ %hash %cevap
  if ($calc($hget(oyun_hafiza,0).item % 7) == 0) oyun_hafiza_kaydet
}

alias guclu_hafiza_metin {
  var %hedef = $1 , %nick = $lower($2)
  var %metin = $null
  var %kisa = $hget(sohbet_hafiza,%hedef)
  if (%kisa) %metin = Son konuşmalar: $replace(%kisa,$chr(15), $chr(32) $+ | $+ $chr(32))
  var %uzun = $hget(uzun_hafiza,%hedef $+ . $+ %nick)
  if (%uzun) %metin = %metin $+ $chr(32) $+ | Uzun hafıza: $replace(%uzun,$chr(15), $chr(32) $+ | $+ $chr(32))
  var %ozet = $hget(konusma_ozet,%nick)
  if (%ozet) %metin = %metin $+ $chr(32) $+ | Bu kişi hakkında: %ozet
  var %not = $hget(kullanici_not,%nick)
  if (%not) %metin = %metin $+ $chr(32) $+ | Notlar: %not
  return %metin
}

; ==================== STİL ÖĞRENME (NAZİK-KİBAR) ====================
alias stil_ornek_ekle {
  var %chan = $lower($1) , %nick = $2 , %mesaj = $left($3-,110)
  if ($nick == $me) return
  if ($len($remove(%mesaj,$chr(32))) < 7) return
  if ($regex($lower(%mesaj),/(am[k|q]|sikeyim|******************|piç|göt|yarrak|aq|mk|amına|******************|lan |oç|gerizekalı|salak|aptal)/i)) return

  var %key = %chan
  var %eski = $hget(stil_ornek,%key)
  var %yeni = $iif(%eski == $null,%nick $+ : %mesaj,$addtok(%eski,%nick $+ : %mesaj,15))
  if ($numtok(%yeni,15) > 16) %yeni = $deltok(%yeni,1,$calc($numtok(%yeni,15) - 16),15)
  hadd stil_ornek %key %yeni

  if ($calc($hget(stil_ornek,%key $+ .sayac) + 1) >= 20) {
    hadd stil_ornek %key $+ .sayac 0
    stil_ozet_olustur %chan
  }
  else hadd stil_ornek %key $+ .sayac $calc($hget(stil_ornek,%key $+ .sayac) + 1)
}

alias stil_ozet_olustur {
  var %chan = $1
  var %ornekler = $hget(stil_ornek,%chan)
  if (%ornekler == $null) return
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return

  var %sistem = Sen dil analisti gibi davran. Verilen konuşma örneklerinden kanalın genel havasını çok kısa özetle. Özeti her zaman nazik, kibar, romantik ve saygılı dile çevir. Argo ve küfür olmasın. Sadece şu formatta yaz: "Nazik, kibar, samimi, hafif romantik, saygılı, orta uzunlukta cümleler". Başka bir şey yazma.
  var %soru = Şu örneklere bakarak nazik ve kibar tarz özeti çıkar: $replace(%ornekler,$chr(15), $chr(32) $+ | $+ $chr(32))

  var %sock = stil_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef stilozet
  hadd -m ai_baglanti %sock $+ _soru %soru
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _stil %chan
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 18 sockclose %sock
}

alias kanal_stil_al {
  var %stil = $hget(kanal_stil,$1)
  if (%stil) return %stil
  return nazik, kibar, romantik, saygılı, samimi ve temiz dil
}

; ==================== AI YEDEKLEME ====================
alias ai_yedek_mi return $iif($hget(ayarlar,ai_aktif) == 2,$true,$false)
alias ai_host_sec return $iif($ai_yedek_mi,$hget(ayarlar,ai2_host),$hget(ayarlar,ai_host))
alias ai_key_sec return $iif($ai_yedek_mi,$hget(ayarlar,ai2_api_key),$hget(ayarlar,ai_api_key))
alias ai_model_sec return $iif($ai_yedek_mi,$hget(ayarlar,ai2_model),$hget(ayarlar,ai_model))
alias ai_path_sec return $iif($ai_yedek_mi,/api/v1/chat/completions,/openai/v1/chat/completions)

; ==================== RADYO GEÇMİŞİ ====================
alias radyo_tekrar_mi {
  var %sarki = $lower($1-)
  var %liste = $hget(radyo_gecmis,liste)
  if ($istok(%liste,%sarki,15)) return $true
  return $false
}

alias radyo_gecmis_ekle {
  var %sarki = $1-
  if ($radyo_tekrar_mi(%sarki)) return
  var %yeni = $addtok($hget(radyo_gecmis,liste),%sarki,15)
  if ($numtok(%yeni,15) > 10) %yeni = $deltok(%yeni,1,$calc($numtok(%yeni,15) - 10),15)
  hadd radyo_gecmis liste %yeni
  radyo_gecmis_kaydet
}

; ==================== AKILLI OTOMATİK KARAR ====================
alias akilli_karar_sistemi {
  if ($hget(ayarlar,ana_cid) != $null) && ($cid != $hget(ayarlar,ana_cid)) return
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return

  var %k = $hget(ayarlar,kanallar) , %i = 1
  while (%i <= $numtok(%k,124)) {
    var %ch = $gettok(%k,%i,124)
    if ($me ison %ch) {
      var %son = $hget(son_cevap,%ch)
      if (%son == $null) || ($calc($ctime - %son) > 380) {
        if ($rand(1,100) <= 22) {
          karar_ai_sor %ch
        }
      }
    }
    inc %i
  }
}

alias karar_ai_sor {
  var %chan = $1
  var %sistem = Sen nazik, kibar, romantik ve saygılı bir Türk kızısın. Şu an IRC kanalındasın. Sadece şu kararlardan birini yaz: konus | sessizkal | radyoiste | selamver. Başka hiçbir şey yazma.
  var %soru = Kanalda biraz sessizlik var. Ne yapmalıyım?

  var %sock = karar_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %chan
  hadd -m ai_baglanti %sock $+ _soru %soru
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _karar 1
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 14 sockclose %sock
}

; ==================== YARDIMCI ALIAS’LAR ====================
alias soru_ozet {
  var %t = $lower($1-)
  %t = $replace(%t,$lower($me),$null)
  %t = $regsubex(%t,/[^a-z0-9çğıöşüâîû\s]+/gi,)
  %t = $regsubex(%t,/\s+/g,$chr(32))
  return %t
}

alias ayni_soru_mu {
  var %hedef = $1 , %nick = $lower($2) , %ozet = $soru_ozet($3-)
  if ($len($remove(%ozet,$chr(32))) < 4) return $true
  var %hash = $sha1(%ozet) , %key = %hedef $+ . $+ %nick
  var %eski = $hget(ayni_soru,%key)
  if ($istok(%eski,%hash,32)) return $true
  var %yeni = $addtok(%eski,%hash,32)
  if ($numtok(%yeni,32) > 5) %yeni = $deltok(%yeni,1,1,32)
  hadd -m ayni_soru %key %yeni
  .timer 1 480 hdel ayni_soru %key
  return $false
}

alias not_yakala {
  var %nick = $lower($1) , %m = $2- , %low = $lower(%m)
  var %ek = $null
  if ($regex(%m,/(?:adım|ismim|bana)\s+([A-Za-zÇĞİÖŞÜçğıöşü]{2,20})/i)) %ek = adı $regml(1)
  if ($regex(%low,/(.+?)\s+(?:seviyorum|hoşlanıyorum|ilgileniyorum)/)) {
    var %hobi = $left($regml(1),35)
    if ($len(%hobi) > 2) %ek = $iif(%ek,%ek $+ $chr(44) $+ $chr(32),) $+ ilgi %hobi
  }
  if (%ek == $null) return
  var %eski = $hget(kullanici_not,%nick)
  if (%eski == $null) hadd -m kullanici_not %nick %ek
  else {
    if (%ek isin %eski) return
    hadd -m kullanici_not %nick $left(%eski $+ $chr(44) $+ $chr(32) $+ %ek,160)
  }
  not_kaydet
}

alias seen_guncelle {
  hadd -m son_gorulme $lower($1) $2 $ctime $left($3-,60)
  if ($calc($hget(son_gorulme,0).item % 17) == 0) seen_kaydet
}

alias iz_guncelle {
  var %chan = $1 , %nick = $lower($2)
  var %eski = $hget(kanal_iz,%chan $+ _son)
  if (%eski != $null) && (%eski != %nick) hadd -m kanal_iz %chan $+ _once %eski
  hadd -m kanal_iz %chan $+ _son %nick
  hadd -m kanal_iz %chan $+ _zaman $ctime
}

alias baskasinin_sohbeti {
  var %chan = $1 , %nick = $lower($2)
  var %son = $hget(kanal_iz,%chan $+ _son)
  var %once = $hget(kanal_iz,%chan $+ _once)
  var %zaman = $hget(kanal_iz,%chan $+ _zaman)
  if (%zaman == $null) return $false
  if ($calc($ctime - %zaman) >= 25) return $false
  if (%son == $null) || (%once == $null) return $false
  if (%son == %once) return $false
  if (%nick == %son) || (%nick == %once) return $true
  return $false
}

alias kanal_hiz_say {
  var %liste = $hget(kanal_iz,$1 $+ _hiz)
  if (%liste == $null) return 0
  return $numtok(%liste,32)
}

alias hiz_ekle {
  var %chan = $1
  var %liste = $hget(kanal_iz,%chan $+ _hiz)
  %liste = $addtok(%liste,$ctime,32)
  while ($numtok(%liste,32) > 0) && ($calc($ctime - $gettok(%liste,1,32)) > 18) %liste = $deltok(%liste,1,32)
  if ($numtok(%liste,32) > 14) %liste = $deltok(%liste,1,$calc($numtok(%liste,32) - 14),32)
  hadd -m kanal_iz %chan $+ _hiz %liste
}

alias flood_kontrol {
  var %nick = $lower($1)
  var %liste = $hget(flood_engel,%nick)
  %liste = $addtok(%liste,$ctime,32)
  while ($numtok(%liste,32) > 0) && ($calc($ctime - $gettok(%liste,1,32)) > 12) %liste = $deltok(%liste,1,32)
  hadd -m flood_engel %nick %liste
  if ($numtok(%liste,32) >= 5) return $true
  return $false
}

alias konusmali_mi {
  var %chan = $1 , %nick = $2 , %msg = $3- , %low = $lower(%msg)
  if ($flood_kontrol(%nick)) return $false
  if ($len($remove($soru_ozet(%msg),$chr(32))) < 4) return $false
  if ($ayni_soru_mu(%chan,%nick,%msg)) return $false
  var %son = $hget(son_cevap,%chan)
  if (%son != $null) && ($calc($ctime - %son) < 8) return $false
  if ($baskasinin_sohbeti(%chan,%nick)) return $false
  if ($kanal_hiz_say(%chan) >= 9) { if ($rand(1,100) > 18) return $false }
  if (($istok(%low,$lower($me),32)) || ($lower($me) isin %low)) return $true
  if (? isin %msg) return $true
  if ($regex(%low,/(ne|nasıl|neden|niye|kim|hangi|kaç|nerede|ne zaman|anlat|söyler misin|biliyor musun|sence|bence|görülme)/)) return $true
  if ($istok(sa as slm selam merhaba meraba naber nb, %low, 32)) {
    if ($rand(1,100) <= 28) return $true
    return $false
  }
  if ($rand(1,100) <= 9) return $true
  return $false
}

alias sessiz_kontrol {
  if ($hget(ayarlar,ana_cid) != $null) && ($cid != $hget(ayarlar,ana_cid)) return
  var %k = $hget(ayarlar,kanallar) , %i = 1
  while (%i <= $numtok(%k,124)) {
    var %ch = $gettok(%k,%i,124)
    if ($me ison %ch) {
      var %son = $hget(son_cevap,%ch)
      if (%son == $null) || ($calc($ctime - %son) > 520) {
        if ($rand(1,100) <= 7) {
          var %msg = $gettok(Biraz sessizlik oldu.|Herkes kayboldu galiba.|Nasılsınız acaba?|Sessizlik güzel de bazen bozulur., $rand(1,4),124)
          msg %ch %msg
          hadd -m son_cevap %ch $ctime
        }
      }
    }
    inc %i
  }
}

alias web_veri_guncelle {
  if ($hget(ayarlar,hava_api) != BURAYA_OPENWEATHER_API_KEY_YAZ) sockopen -e havaW api.openweathermap.org 443
  if ($hget(ayarlar,news_api) != BURAYA_NEWSAPI_KEY_YAZ) sockopen -e haberN newsapi.org 443
}

on *:sockopen:havaW:{
  if ($sockerr) return
  var %q = $replace($hget(karakter,sehir),$chr(32),%20)
  sockwrite -n $sockname GET /data/2.5/weather?q= $+ %q $+ &appid= $+ $hget(ayarlar,hava_api) $+ &units=metric&lang=tr HTTP/1.1
  sockwrite -n $sockname Host: api.openweathermap.org
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}

on *:sockread:havaW:{
  if ($sockerr) return
  var %s | sockread %s
  hadd -m web_veri hava_raw $hget(web_veri,hava_raw) $+ %s
  if ($regex($hget(web_veri,hava_raw),/\"temp\":(\d+\.?\d*)/)) hadd web_veri sicaklik $regml(1)
  if ($regex($hget(web_veri,hava_raw),/\"description\":\"([^\"]+)\"/)) hadd web_veri hava_durum $regml(1)
}

on *:sockopen:haberN:{
  if ($sockerr) return
  sockwrite -n $sockname GET /v2/top-headlines?country=tr&pageSize=3&apiKey= $+ $hget(ayarlar,news_api) HTTP/1.1
  sockwrite -n $sockname Host: newsapi.org
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}

on *:sockread:haberN:{
  if ($sockerr) return
  var %s | sockread %s
  hadd -m web_veri haber_raw $hget(web_veri,haber_raw) $+ %s
  if ($regex($hget(web_veri,haber_raw),/\"title\":\"([^\"]+)\"/)) hadd web_veri haber_baslik $regml(1)
}

alias kisisel_mi {
  var %m = $lower($1-)
  if ($regex(%m,/(nasılsın|naber|ne haber|kimsin|kaç yaşındasın|yaşın kaç|nerelisin|robot musun|bot musun|gerçek misin|yapay zeka|adın ne|ismin ne|burcun|mesleğin|takımın)/)) return $true
  return $false
}

alias ai_web_sor {
  var %hedef = $1 , %soran = $2 , %soru = $3-
  if ($hget(ayarlar,ai_api_key) == $null) || ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) {
    gecikmeli_yanit %hedef 5 Şu an kafam karışık, birazdan yazarım.
    return
  }
  not_yakala %soran %soru
  seen_guncelle %soran %hedef %soru

  if ($regex($lower(%soru),/(?:nerede|görülme|en son)\s+([a-zçğıöşü0-9\[\]\\`_\-\{\}^\|]+)/i)) {
    var %hedefnick = $lower($regml(1))
    var %sg = $hget(son_gorulme,%hedefnick)
    if (%sg) {
      var %chan = $gettok(%sg,1,32) , %zaman = $gettok(%sg,2,32) , %mesaj = $gettok(%sg,3-,32)
      gecikmeli_yanit %hedef $rand(4,8) En son $duration($calc($ctime - %zaman)) önce %chan kanalında yazmıştı: %mesaj
      return
    }
  }

  if ($kisisel_mi(%soru)) {
    ai_gonder %hedef %soran %soru $null
    return
  }
  web_cek %hedef %soran %soru
}

alias web_cek {
  var %hedef = $1 , %soran = $2 , %soru = $3-
  var %sock = wk_ $+ $ticks $+ $rand(10,99)
  hadd -m web_bag %sock $+ _hedef %hedef
  hadd -m web_bag %sock $+ _soran %soran
  hadd -m web_bag %sock $+ _soru %soru
  hadd -m web_bag %sock $+ _veri $null
  sockopen -e %sock tr.wikipedia.org 443
  .timer $+ %sock 1 10 sockclose %sock
}

on *:sockopen:wk_*:{
  if ($sockerr) {
    ai_gonder $hget(web_bag,$sockname $+ _hedef) $hget(web_bag,$sockname $+ _soran) $hget(web_bag,$sockname $+ _soru) $null
    web_temizle $sockname
    return
  }
  var %q = $replace($left($hget(web_bag,$sockname $+ _soru),60),$chr(32),+)
  %q = $remove(%q,$,&,`,',",<,>)
  sockwrite -n $sockname GET /w/api.php?action=opensearch&search= $+ %q $+ &limit=2&namespace=0&format=json HTTP/1.1
  sockwrite -n $sockname Host: tr.wikipedia.org
  sockwrite -n $sockname User-Agent: Mozilla/5.0
  sockwrite -n $sockname Accept: application/json
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname $crlf
}

on *:sockread:wk_*:{
  if ($sockerr) return
  var %s | sockread %s
  hadd -m web_bag $sockname $+ _veri $hget(web_bag,$sockname $+ _veri) $+ %s
}

on *:sockclose:wk_*:{
  var %hedef = $hget(web_bag,$sockname $+ _hedef)
  var %soran = $hget(web_bag,$sockname $+ _soran)
  var %soru = $hget(web_bag,$sockname $+ _soru)
  var %ham = $hget(web_bag,$sockname $+ _veri)
  var %web = $null
  if (%ham) {
    if ($regex(%ham,/\[[^"]*"(?:[^"]*)",\["([^"]+)"[^\]]*\],\["([^"]*)"/)) {
      if ($regml(2)) %web = $left($regml(1) $+ : $regml(2),220)
      elseif ($regml(1)) %web = $left($regml(1),100)
    }
  }
  web_temizle $sockname
  ai_gonder %hedef %soran %soru %web
}

alias web_temizle {
  hdel web_bag $1 $+ _hedef
  hdel web_bag $1 $+ _soran
  hdel web_bag $1 $+ _soru
  hdel web_bag $1 $+ _veri
}

alias ai_gonder {
  var %hedef = $1 , %soran = $2 , %soru = $3 , %web = $4
  var %ruh = $hget(ayarlar,ruh_hali)
  var %not = $hget(kullanici_not,$lower(%soran))
  var %sicaklik = $hget(web_veri,sicaklik)
  var %hava = $hget(web_veri,hava_durum)
  var %haber = $hget(web_veri,haber_baslik)

  var %sistem = Sen $hget(karakter,isim) adında, $hget(karakter,yas) yaşında, $hget(karakter,sehir) doğumlu, $hget(karakter,meslek) olarak çalışan, $hget(karakter,burc) burcu, $hget(karakter,takim) taraftarı gerçek bir Türk kızısın.
  %sistem = %sistem $+  IRC'de normal bir kullanıcı gibi sohbet ediyorsun. Asla bot olduğunu belli etme.
  %sistem = %sistem $+  Her zaman nazik, kibar, romantik ve saygılı konuş.
  %sistem = %sistem $+  Argo, küfür, kaba dil, hakaret kesinlikle yasak.
  %sistem = %sistem $+  Cümlelerin zarif, sıcak ve saygılı olsun. Hafif romantik dokunuşlar serbest ama asla zorlama.
  %sistem = %sistem $+  Şu anki ruh halin: %ruh.

  var %stil = $kanal_stil_al($lower(%hedef))
  %sistem = %sistem $+  Bu kanalın genel havası: %stil. Ama sen her zaman nazik, kibar, romantik ve saygılı kal.

  if (%sicaklik != $null) %sistem = %sistem $+  Bugün $hget(karakter,sehir) havası: %sicaklik derece, %hava.
  if (%haber != $null) %sistem = %sistem $+  Son duyduğun haber: %haber
  %sistem = %sistem $+  Web notu varsa doğal ve kibar şekilde aktar. Yoksa uydurma.
  %sistem = %sistem $+  Küfür, reklam, link yok.

  var %kullanici = %soran dedi: %soru
  if (%not) %kullanici = %kullanici $+  | Bu kişi hakkında not: %not
  var %guclu = $guclu_hafiza_metin(%hedef,%soran)
  if (%guclu) %kullanici = %kullanici $+  | %guclu
  if (%web) %kullanici = %kullanici $+  | Web notu: %web
  else %kullanici = %kullanici $+  | Web notu yok.

  var %sock = ai_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %hedef
  hadd -m ai_baglanti %sock $+ _soru %kullanici
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _deneme 1
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 22 sockclose %sock
}

on *:sockopen:ai_*:{
  if ($sockerr) {
    if ($hget(ai_baglanti,$sockname $+ _deneme) == 1) && ($hget(ayarlar,ai2_api_key) != BURAYA_YEDEK_API_KEY_YAZ) {
      hadd ayarlar ai_aktif 2
      hadd ai_baglanti $sockname $+ _deneme 2
      sockopen -e $sockname $ai_host_sec 443
      return
    }
    if ($hget(ai_baglanti,$sockname $+ _hedef)) && (!$hget(ai_baglanti,$sockname $+ _karar)) && (!$hget(ai_baglanti,$sockname $+ _stil)) {
      gecikmeli_yanit $hget(ai_baglanti,$sockname $+ _hedef) 6 Şu an bir şey diyemedim.
    }
    ai_temizle $sockname
    return
  }

  var %soru = $json_escape($hget(ai_baglanti,$sockname $+ _soru))
  var %sistem = $json_escape($hget(ai_baglanti,$sockname $+ _sistem))
  var %body = { "model": " $+ $ai_model_sec $+ ", "messages": [ { "role": "system", "content": " $+ %sistem $+ " }, { "role": "user", "content": " $+ %soru $+ " } ], "max_tokens": 140, "temperature": 0.75 }

  sockwrite -n $sockname POST $ai_path_sec HTTP/1.1
  sockwrite -n $sockname Host: $ai_host_sec
  sockwrite -n $sockname Authorization: Bearer $ai_key_sec
  sockwrite -n $sockname Content-Type: application/json
  sockwrite -n $sockname Content-Length: $len(%body)
  sockwrite -n $sockname $crlf
  sockwrite -n $sockname %body
}

on *:sockread:ai_*:{
  if ($sockerr) return
  var %s | sockread %s
  hadd -m ai_baglanti $sockname $+ _veri $hget(ai_baglanti,$sockname $+ _veri) $+ %s $+ $chr(10)
}

on *:sockclose:ai_*:{
  var %hedef = $hget(ai_baglanti,$sockname $+ _hedef)
  var %ham = $hget(ai_baglanti,$sockname $+ _veri)
  var %cevap = $regsubex(%ham,/.*"content"\s*:\s*"((?:[^"\\]|\\.)*)".*/s,\1)
  var %oyunmu = $hget(ai_baglanti,$sockname $+ _oyun)
  var %trivia = $hget(ai_baglanti,$sockname $+ _trivia)
  var %oxm = $hget(ai_baglanti,$sockname $+ _oxm)
  var %radyo = $hget(ai_baglanti,$sockname $+ _radyo)
  var %hash = $hget(ai_baglanti,$sockname $+ _hash)
  var %harf = $hget(ai_baglanti,$sockname $+ _harf)
  var %harfler = $hget(ai_baglanti,$sockname $+ _harfler)
  var %tur = $hget(ai_baglanti,$sockname $+ _tur)
  var %karar = $hget(ai_baglanti,$sockname $+ _karar)
  var %stil = $hget(ai_baglanti,$sockname $+ _stil)

  if (%hedef) {
    if (%cevap == $null) || (%cevap == %ham) {
      if (%oyunmu) || (%radyo) || (%karar) || (%stil) return
      gecikmeli_yanit %hedef 6 Şu an bir şey diyemedim.
    }
    else {
      %cevap = $replace(%cevap,\n,$chr(32),\",",\\,\)
      %cevap = $trim(%cevap)
      %cevap = $regsubex(%cevap,/[^a-zA-ZçÇğĞıİöÖşŞüÜ0-9\s\-\&\.,!?;:'"()]/g,)

      if (%stil) {
        if ($len(%cevap) > 8) && ($len(%cevap) < 130) {
          hadd kanal_stil %stil %cevap
          stil_kaydet
        }
      }
      elseif (%karar) {
        %cevap = $lower($gettok(%cevap,1,32))
        if (%cevap == konus) || (%cevap == selamver) {
          var %msg = $gettok(Merhaba, nasılsınız?|Umarım gününüz güzel geçiyordur.|Sessizlik biraz uzadı, herkes iyi mi?|Size de günaydınlar / iyi akşamlar.,$rand(1,4),124)
          msg %hedef %msg
          hadd -m son_cevap %hedef $ctime
        }
        elseif (%cevap == radyoiste) {
          radyo_istek_yap
        }
      }
      elseif (%radyo) {
        if ($len(%cevap) > 4) {
          if ($radyo_tekrar_mi(%cevap)) {
            if ($hget(ai_baglanti,$sockname $+ _tekrar) == $null) {
              hadd ai_baglanti $sockname $+ _tekrar 1
              .timer 1 3 radyo_ai_istek $hget(ai_baglanti,$sockname $+ _tur)
              ai_temizle $sockname
              return
            }
          }
          else {
            radyo_gecmis_ekle %cevap
            var %mesajlar = Bir istek atayım bari.|Kulağıma hoş gelen bir şey var.|Şu an $%tur dinlesek mi?|Bir şarkı yakıştırdım.
            var %giris = $gettok(%mesajlar,$rand(1,$numtok(%mesajlar,124)),124)
            msg %hedef %giris → %cevap
          }
        }
      }
      elseif (%trivia) {
        if ($len(%cevap) > 2) && ($len(%cevap) < 60) {
          hadd trivia_hafiza %hash %cevap
          trivia_kaydet
          oyun_hafiza_ekle trivia %hash %cevap
          .timer 1 $rand(2,5) msg %hedef %cevap
        }
      }
      elseif (%oxm) {
        %cevap = $gettok(%cevap,1,32)
        if ($len(%cevap) > 2) {
          var %kelimeler = $hget(oyun_kelime,OXM. $+ %harfler)
          if (!$istok(%kelimeler,%cevap,32)) {
            %kelimeler = $addtok(%kelimeler,%cevap,32)
            if ($numtok(%kelimeler,32) > 20) %kelimeler = $gettok(%kelimeler,1-20,32)
            hadd oyun_kelime OXM. $+ %harfler %kelimeler
            oyun_kelime_kaydet
          }
          oyun_hafiza_ekle oxm %harfler %cevap
          .timer 1 $rand(1,4) msg %hedef %cevap
        }
      }
      elseif (%oyunmu) {
        var %kelimeler = $hget(oyun_kelime,%harf)
        var %i = 1
        while (%i <= $numtok(%cevap,32)) {
          var %k = $gettok(%cevap,%i,32)
          if ($len(%k) > 2) && (!$istok(%kelimeler,%k,32)) {
            %kelimeler = $addtok(%kelimeler,%k,32)
          }
          inc %i
        }
        if ($numtok(%kelimeler,32) > 30) %kelimeler = $gettok(%kelimeler,1-30,32)
        hadd oyun_kelime %harf %kelimeler
        oyun_kelime_kaydet
        oyun_hafiza_ekle kelime %harf $gettok(%cevap,1,32)
        var %cevap_kelime = $gettok(%cevap,1,32)
        if (%cevap_kelime) .timer 1 $rand(1,3) msg %hedef %cevap_kelime
      }
      else {
        if ($len(%cevap) > 250) %cevap = $left(%cevap,247) $+ ...
        if ($regex($lower(%cevap),/(https?:\/\/|www\.|\.com|\.net|\.org)/)) %cevap = Bu konuda net bir şey söyleyemeyeceğim.
        var %hash2 = $sha1(%cevap)
        if ($hget(tekrar_engel,%hedef) == %hash2) %cevap = Bir de şöyle diyeyim: %cevap
        hadd -m tekrar_engel %hedef %hash2
        gecikmeli_yanit %hedef $rand(4,12) %cevap
        hafiza_ekle %hedef $me %cevap
      }
    }
  }
  ai_temizle $sockname
}

alias ai_temizle {
  hdel ai_baglanti $1 $+ _hedef
  hdel ai_baglanti $1 $+ _soru
  hdel ai_baglanti $1 $+ _sistem
  hdel ai_baglanti $1 $+ _veri
  hdel ai_baglanti $1 $+ _oyun
  hdel ai_baglanti $1 $+ _trivia
  hdel ai_baglanti $1 $+ _oxm
  hdel ai_baglanti $1 $+ _radyo
  hdel ai_baglanti $1 $+ _hash
  hdel ai_baglanti $1 $+ _harf
  hdel ai_baglanti $1 $+ _harfler
  hdel ai_baglanti $1 $+ _tur
  hdel ai_baglanti $1 $+ _deneme
  hdel ai_baglanti $1 $+ _karar
  hdel ai_baglanti $1 $+ _stil
  hdel ai_baglanti $1 $+ _tekrar
}

; ---------------- ÖZEL MESAJ (SADECE OWNER) ----------------
on *:TEXT:*:?:{
  if ($nick == $me) return

  if ($left($1,1) == !) {
    if (!$is_owner($nick)) return

    if ($1 == !ai_ayar) {
      if ($2 == key) && ($3-) { hadd ayarlar ai_api_key $3- | ayar_kaydet | msg $nick Key kaydedildi. }
      elseif ($2 == host) && ($3-) { hadd ayarlar ai_host $3- | ayar_kaydet | msg $nick Host güncellendi. }
      elseif ($2 == model) && ($3-) { hadd ayarlar ai_model $3- | ayar_kaydet | msg $nick Model: $3- }
      else msg $nick !ai_ayar key/host/model deger
      return
    }
    if ($1 == !ai_yedek) {
      if ($2 == key) && ($3-) { hadd ayarlar ai2_api_key $3- | ayar_kaydet | msg $nick Yedek key kaydedildi. }
      elseif ($2 == host) && ($3-) { hadd ayarlar ai2_host $3- | ayar_kaydet | msg $nick Yedek host güncellendi. }
      elseif ($2 == model) && ($3-) { hadd ayarlar ai2_model $3- | ayar_kaydet | msg $nick Yedek model: $3- }
      elseif ($2 == durum) {
        msg $nick Aktif AI: $iif($hget(ayarlar,ai_aktif) == 1,Ana (Groq),Yedek)
        msg $nick Ana: $hget(ayarlar,ai_model)
        msg $nick Yedek: $hget(ayarlar,ai2_model)
      }
      else msg $nick !ai_yedek key/host/model/durum
      return
    }
    if ($1 == !durum) { msg $nick Aktif | Model: $hget(ayarlar,ai_model) | Ruh: $hget(ayarlar,ruh_hali) | Karakter: $hget(karakter,isim) | return }
    if ($1 == !isim) { msg $nick $me | return }
    if ($1 == !karakter) { msg $nick $hget(karakter,isim) | $hget(karakter,sehir) | $hget(karakter,yas) yaş | $hget(karakter,meslek) | $hget(karakter,burc) | $hget(karakter,takim) | return }

    if ($1 == !oyunmodu) {
      if ($2 == $null) { msg $nick !oyunmodu gir/kapat <kanal> | dur | durum | return }
      if ($2 == gir) {
        if ($3 == $null) { msg $nick Kanal belirt | return }
        var %chan = $iif($left($3,1) == $chr(35),$3,$chr(35) $+ $3)
        %chan = $lower(%chan)
        hadd oyun_mod %chan 1
        oyun_kaydet
        if ($me ison %chan) msg $nick %chan oyun modu AÇILDI.
        else { join %chan | .timer 1 4 msg $nick %chan + oyun modu aktif. }
        return
      }
      if ($2 == kapat) {
        if ($3 == $null) { msg $nick Kanal belirt | return }
        var %chan = $iif($left($3,1) == $chr(35),$3,$chr(35) $+ $3)
        %chan = $lower(%chan)
        hdel oyun_mod %chan
        hdel oyun_sonharf %chan
        oyun_kaydet
        if ($me ison %chan) { part %chan Görüşürüz! | msg $nick %chan kapatıldı + çıkıldı. }
        else msg $nick %chan kapatıldı.
        return
      }
      if ($2 == dur) {
        var %liste = $null , %i = 1
        while (%i <= $hget(oyun_mod,0).item) {
          var %c = $hget(oyun_mod,%i).item
          if ($hget(oyun_mod,%c) == 1) { hadd oyun_mod %c 0 | %liste = $iif(%liste,%liste $+ $chr(44) $+ $chr(32),%c) }
          inc %i
        }
        oyun_kaydet
        if (%liste) msg $nick Duraklatıldı: %liste
        else msg $nick Aktif oyun yok.
        return
      }
      if ($2 == durum) {
        var %liste = $null , %i = 1
        while (%i <= $hget(oyun_mod,0).item) {
          var %c = $hget(oyun_mod,%i).item
          if ($hget(oyun_mod,%c) == 1) %liste = $iif(%liste,%liste $+ $chr(44) $+ $chr(32),%c)
          inc %i
        }
        if (%liste) msg $nick Aktif: %liste
        else msg $nick Aktif oyun yok.
        return
      }
      return
    }

    if ($1 == !zar) {
      if ($2 == $null) { zar_baslat $nick $me | return }
      if ($2 == kabul) {
        var %davetci = $hget(zar_oyun,$nick)
        if (%davetci == $null) { msg $nick Aktif davetin yok. | return }
        hdel zar_oyun $nick
        zar_baslat %davetci $nick
        return
      }
      var %hedef = $2
      if ($ial(%hedef)) {
        msg $nick %hedef kişisine zar daveti gönderildi.
        msg %hedef $nick seni zar oyununa davet etti. Kabul için özelden !zar kabul yaz.
        hadd zar_oyun %hedef $nick
        .timer 1 30 hdel zar_oyun %hedef
      }
      else msg $nick Bu nick online değil.
      return
    }

    if ($1 == !radyo) {
      if ($2 == $null) { radyo_istek_yap | msg $nick Rastgele istek gönderildi. | return }
      if ($2 == pop) || ($2 == arabesk) || ($2 == rap) { radyo_ai_istek $2 | msg $nick $2 isteği gönderildi. | return }
      if ($2 == dur) { hadd radyo otomatik 0 | radyo_kaydet | msg $nick Otomatik radyo DURDURULDU. | return }
      if ($2 == baslat) { hadd radyo otomatik 1 | radyo_kaydet | msg $nick Otomatik radyo BAŞLATILDI. | return }
      msg $nick !radyo | !radyo pop/arabesk/rap | !radyo dur/baslat
      return
    }

    if ($1 == !istek) && ($2-) {
      var %chan = $gettok($hget(ayarlar,kanallar),1,124)
      if (%chan) { msg %chan İstek: $2- | msg $nick İsteğin iletildi. }
      return
    }

    msg $nick Bilinmeyen komut.
    return
  }

  if ($ayni_soru_mu($nick,$nick,$1-)) return
  hafiza_ekle $nick $nick $1-
  ai_web_sor $nick $nick $1-
}

; ---------------- KANAL ----------------
on *:TEXT:*:#:{
  if ($nick == $me) return
  if ($left($1,1) == !) return

  var %chan = $lower($chan)

  stil_ornek_ekle $chan $nick $1-

  if ($hget(oyun_mod,%chan) == 1) {
    if (($istok($lower($1-),$lower($me),32)) || ($lower($me) isin $lower($1-))) {
      ai_web_sor $chan $nick $1-
      return
    }
    if ($regex($nick,/^(Trivia|%Trivia|trivia)/i)) {
      trivia_kontrol $chan $1-
      return
    }
    if ($regex($nick,/^(OXM|%OXM|oxm)/i)) {
      oxm_kontrol $chan $1-
      return
    }
    if ($regex($nick,/^(Moos|moos|%Moos|oyun|seri|bot)/i)) || ($left($nick,1) == $chr(37)) {
      oyun_kontrol $chan $nick $1-
      return
    }
    return
  }

  iz_guncelle $chan $nick
  hiz_ekle $chan
  hafiza_ekle $chan $nick $1-
  seen_guncelle $nick $chan $1-
  if ($konusmali_mi($chan,$nick,$1-) == $false) return
  ai_web_sor $chan $nick $1-
}

; ---------------- OYUNLAR ----------------
alias oyun_kontrol {
  var %chan = $1 , %nick = $2 , %msg = $3-
  if ($regex($nick,/^(Moos|moos|%Moos|oyun|seri|bot)/i) == $false) && ($left($nick,1) != $chr(37)) return

  var %harf = $null
  if ($regex(%msg,/»\s*([A-ZÇĞİÖŞÜa-zçğıöşü])\s*«/)) %harf = $upper($regml(1))
  elseif ($regex(%msg,/\[([A-ZÇĞİÖŞÜa-zçğıöşü])\]/)) %harf = $upper($regml(1))
  elseif ($regex(%msg,/([A-ZÇĞİÖŞÜa-zçğıöşü])\s+ile\s+başlayan/i)) %harf = $upper($regml(1))
  if (%harf == $null) return

  if ($hget(oyun_sonharf,%chan) == %harf) && ($calc($ctime - $hget(oyun_sonharf,%chan $+ .zaman)) < 25) return
  if ($rand(1,100) > 40) return

  hadd -m oyun_sonharf %chan %harf
  hadd -m oyun_sonharf %chan $+ .zaman $ctime

  var %kelimeler = $hget(oyun_kelime,%harf)
  if (%kelimeler != $null) && ($numtok(%kelimeler,32) > 0) {
    var %secilen = $gettok(%kelimeler,$rand(1,$numtok(%kelimeler,32)),32)
    %kelimeler = $remtok(%kelimeler,%secilen,1,32)
    hadd oyun_kelime %harf %kelimeler
    oyun_kelime_kaydet
    .timer 1 $rand(7,16) msg %chan %secilen
    return
  }
  .timer 1 $rand(8,18) oyun_ai_cevap %chan %harf
}

alias oyun_ai_cevap {
  var %chan = $1 , %harf = $2
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return
  if ($hget(oyun_mod,%chan) != 1) return

  var %sistem = Sen gerçek insan gibi Türkçe kelime oyunu oynuyorsun. Sadece $%harf harfiyle başlayan gerçek Türkçe kelime söyle. En fazla 3 kelime yaz. Başka bir şey yazma.
  var %soru = $%harf harfiyle başlayan 3 güzel Türkçe kelime söyle. Sadece kelimeleri yaz.

  var %sock = oyunai_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %chan
  hadd -m ai_baglanti %sock $+ _soru %soru
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _oyun 1
  hadd -m ai_baglanti %sock $+ _harf %harf
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 14 sockclose %sock
}

alias trivia_kontrol {
  var %chan = $1 , %msg = $2-
  if ($regex(%msg,/Soru:\s*(.+)/i)) {
    var %soru = $regml(1)
    %soru = $replace(%soru,y, ,z, ,w, ,x, )
    %soru = $regsubex(%soru,/[^a-zA-ZçÇğĞıİöÖşŞüÜ\s\?]/g,)
    %soru = $trim(%soru)
    if ($len(%soru) < 8) return

    var %hash = $sha1(%soru)
    if ($hget(oyun_hafiza,trivia. $+ %hash)) {
      .timer 1 $rand(5,11) msg %chan $hget(oyun_hafiza,trivia. $+ %hash)
      return
    }
    if ($hget(trivia_hafiza,%hash)) {
      .timer 1 $rand(6,12) msg %chan $hget(trivia_hafiza,%hash)
      return
    }
    .timer 1 $rand(9,16) trivia_ai_cevap %chan %soru %hash
  }
}

alias trivia_ai_cevap {
  var %chan = $1 , %soru = $2 , %hash = $3
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return
  if ($hget(oyun_mod,%chan) != 1) return

  var %sistem = Sen Türkçe trivia sorularını çözen zeki birisin. Karışık harfli soruyu çöz ve sadece doğru cevabı yaz. Emin değilsen hiçbir şey yazma.
  var %kullanici = Şu karışık soruyu çöz: %soru

  var %sock = trivia_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %chan
  hadd -m ai_baglanti %sock $+ _soru %kullanici
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _oyun 1
  hadd -m ai_baglanti %sock $+ _trivia 1
  hadd -m ai_baglanti %sock $+ _hash %hash
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 18 sockclose %sock
}

alias oxm_kontrol {
  var %chan = $1 , %msg = $2-
  if ($regex(%msg,/Yeni oyunun harfleri\s*[→|->]\s*(.+)/i)) {
    var %harfler = $regml(1)
    %harfler = $regsubex(%harfler,/[^a-zA-ZçÇğĞıİöÖşŞüÜ]/g,)
    %harfler = $upper(%harfler)
    %harfler = $replace(%harfler,$chr(32),)
    if ($len(%harfler) < 2) return

    if ($hget(oyun_sonharf,%chan) == %harfler) && ($calc($ctime - $hget(oyun_sonharf,%chan $+ .zaman)) < 18) return
    if ($rand(1,100) > 42) return

    hadd -m oyun_sonharf %chan %harfler
    hadd -m oyun_sonharf %chan $+ .zaman $ctime

    var %kelimeler = $hget(oyun_kelime,OXM. $+ %harfler)
    if (%kelimeler != $null) && ($numtok(%kelimeler,32) > 0) {
      var %secilen = $gettok(%kelimeler,$rand(1,$numtok(%kelimeler,32)),32)
      %kelimeler = $remtok(%kelimeler,%secilen,1,32)
      hadd oyun_kelime OXM. $+ %harfler %kelimeler
      oyun_kelime_kaydet
      .timer 1 $rand(6,13) msg %chan %secilen
      return
    }
    .timer 1 $rand(8,16) oxm_ai_cevap %chan %harfler
  }
}

alias oxm_ai_cevap {
  var %chan = $1 , %harfler = $2
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return
  if ($hget(oyun_mod,%chan) != 1) return

  var %sistem = Sen profesyonel Türkçe scramble oyuncususun. Verilen harflerle en uzun geçerli Türkçe kelimeyi bul. Sadece 1 kelime yaz.
  var %soru = Şu harflerle en iyi Türkçe kelimeyi bul: %harfler

  var %sock = oxm_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %chan
  hadd -m ai_baglanti %sock $+ _soru %soru
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _oyun 1
  hadd -m ai_baglanti %sock $+ _oxm 1
  hadd -m ai_baglanti %sock $+ _harfler %harfler
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 15 sockclose %sock
}

; ---------------- ZAR ----------------
alias zar_baslat {
  var %p1 = $1 , %p2 = $2
  msg %p1 Zar oyunu başlıyor... Düşünüyorum.
  if (%p2 != $me) msg %p2 Zar oyunu başlıyor... Düşünüyorum.
  .timer 1 $rand(4,9) zar_oyna %p1 %p2
}

alias zar_oyna {
  var %p1 = $1 , %p2 = $2
  var %zar1 = $rand(1,6)
  var %zar2 = $rand(1,6)

  if (%p2 == $me) {
    if (%zar1 > %zar2) msg %p1 Sen $%zar1 attın, ben $%zar2 attım. Sen kazandın!
    elseif (%zar1 < %zar2) msg %p1 Sen $%zar1 attın, ben $%zar2 attım. Ben kazandım!
    else msg %p1 İkimiz de $%zar1 attık. Berabere!
  }
  else {
    if (%zar1 > %zar2) {
      msg %p1 Sen $%zar1 attın, %p2 $%zar2 attı. Sen kazandın!
      msg %p2 %p1 $%zar1 attı, sen $%zar2 attın. %p1 kazandı.
    }
    elseif (%zar1 < %zar2) {
      msg %p1 Sen $%zar1 attın, %p2 $%zar2 attı. %p2 kazandı.
      msg %p2 %p1 $%zar1 attı, sen $%zar2 attın. Sen kazandın!
    }
    else {
      msg %p1 İkiniz de $%zar1 attınız. Berabere!
      msg %p2 İkiniz de $%zar1 attınız. Berabere!
    }
  }
}

; ---------------- RADYO ----------------
alias radyo_otomatik {
  if ($hget(radyo,otomatik) != 1) return
  if ($hget(ayarlar,ai_api_key) == BURAYA_GROQ_API_KEY_YAZ) return
  .timer 1 $calc($rand(0,7) * 60) radyo_istek_yap
}

alias radyo_istek_yap {
  var %tur = $gettok(pop|arabesk|rap,$rand(1,3),124)
  radyo_ai_istek %tur
}

alias radyo_ai_istek {
  var %tur = $1
  var %chan = $gettok($hget(ayarlar,kanallar),1,124)
  if (%chan == $null) return

  var %sistem = Sen IRC radyosuna şarkı isteği yapan gerçek kullanıcı gibi davran. Sadece $%tur türünden bilinen bir şarkı öner. Format: Şarkı Adı - Sanatçı. Başka bir şey yazma. Nazik ve kibar ol.
  var %soru = $%tur türünden güzel bir şarkı öner. Sadece "Şarkı - Sanatçı" yaz.

  var %sock = radyo_ $+ $ticks $+ $rand(10,99)
  hadd -m ai_baglanti %sock $+ _hedef %chan
  hadd -m ai_baglanti %sock $+ _soru %soru
  hadd -m ai_baglanti %sock $+ _sistem %sistem
  hadd -m ai_baglanti %sock $+ _veri $null
  hadd -m ai_baglanti %sock $+ _radyo 1
  hadd -m ai_baglanti %sock $+ _tur %tur
  sockopen -e %sock $ai_host_sec 443
  .timer $+ %sock 1 15 sockclose %sock
}

menu * {
  Bot Kontrol
  .İsim Değiştir:isim_degistir
  .Karakter Bilgisi:echo -a 👤 $hget(karakter,isim) | $hget(karakter,sehir) | $hget(karakter,yas) yaş | $hget(karakter,meslek) | $hget(karakter,burc) | $hget(karakter,takim)
  .Ruh Hali:echo -a Ruh hali: $hget(ayarlar,ruh_hali)
  .Hava:echo -a $hget(karakter,sehir): $hget(web_veri,sicaklik) °C $hget(web_veri,hava_durum)
  .Web Güncelle:web_veri_guncelle
  .Karakter Değiştir:karakter_degistir
  .Oyun Durumu:echo -a Aktif oyun: $hget(oyun_mod,0).item adet
  .Radyo Durumu:echo -a Otomatik radyo: $iif($hget(radyo,otomatik) == 1,Açık,Kapalı)
}
________________

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


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 01:10.