Tekil Mesaj gösterimi
Alt 13 Ağustos 2026, 10:21   #1
KivanC Editör
✓
W r i t e r
KivanC - ait Kullanıcı Resmi (Avatar)

Standart Help Asistani (Ircd Bir Ilk)

WhyBot - Help Asistan Modülü Nedir ve Ne İşe Yarar?

#help kanalında düzeni sağlamak, sıra karmaşasını önlemek ve kullanıcıların mIRC script, IRC servisleri ve kodlama sorularına otomatik olarak (yapay zeka ve web arama destekli) yanıt vermek için geliştirilmiş gelişmiş bir yardım asistanıdır.

Sistem Nasıl Çalışır?
1. Sıralı Giriş (Queue Sistemi): Kullanıcı #help kanalına girdiğinde otomatik olarak sıraya alınır. Aynı anda birden fazla kullanıcıyla çakışma yaşanmaz.
2. Sıra Size Geldiğinde: Bot sıradaki kullanıcıya otomatik olarak +v (voice) yetkisi verir ve özel olarak ilgilenildiğini bildirir.
3. Soru Sorma Süresi: Kullanıcının soru sorması için 15 saniye süresi vardır. Soru iletilmezse oturum nazikçe kapatılır.
4. Akıllı Yanıt ve Web Arama: Kullanıcı !soru <sorunuz> komutuyla sorusunu ilettiğinde;
- NickServ, ChanServ, OperServ RFC dökümanları ve mIRC script kod blokları taranır.
- Sorunun kalıplarla eşleşmemesi durumunda DuckDuckGo altyapısı ile anlık web araması yapılarak en doğru çözüm kanala yansıtılır.
5. Süre Sınırı ve Güvenlik: Yardım oturumu toplam 2 dakika sürer. Son 10 saniye kala kullanıcı uyarılır ve süre sonunda voice yetkisi otomatik olarak geri alınır.

Kullanıcı Komutları:
- !soru <sorunuz> : #help kanalında voice yetkinizdeyken mIRC script, komut veya servis sorularınızı sormanızı sağlar.

HTML-Kodu

============================================================
; WHY BOT - HELP ASİSTAN MODÜLÜ (#help) - TEKİL SÜRÜM
; ============================================================

on *:JOIN:#help: {
  if ($nick == $me) {
    .mode $chan +h $me
    var %i = 1
    while (%i <= $ibl($chan,0)) {
      .mode $chan -b $ibl($chan,%i)
      inc %i
    }
    .mode $chan +m
    .topic $chan [BİLGİ] #help kanalı otomatik moddadır. Yardım almak için sıranızı bekleyiniz. | Why Bot v.2026
    return
  }

  hinc WhyHelpStats toplam_user

  if ($window(#opers)) || ($chan(#opers)) {
    .msg #opers 09[HELP BİLDİRİM] 12 $nick 03 adlı kullanıcı 07 #help 03 kanalına giriş yaptı.
  }
  WhyHelpKuyrugaEkle $chan $nick
}

alias -l WhyHelpKuyrugaEkle {
  var %chan = $1, %nick = $2
  if (!$hget(WhyHelpQueue,%nick)) {
    var %toplam = $calc($hget(WhyHelpQueue,0).item + 1)
    hadd WhyHelpQueue %nick %toplam

    if ($hget(WhyHelpStatus,aktif_user) == $null) {
      WhyHelpSiradakiIsle %chan
    }
    else {
      var %sirasi = $hget(WhyHelpQueue,%nick)
      .notice %nick 09[SIRA BİLGİSİ] 03#help kanalına hoş geldiniz! Şu an başka bir kullanıcıya yardım edilmektedir. Sıra numaranız: 12 %sirasi
    }
  }
}

alias WhyHelpSiradakiIsle {
  var %chan = $1
  if ($hget(WhyHelpQueue,0).item == 0) {
    hdel WhyHelpStatus aktif_user
    return
  }

  var %i = 1, %secilen = $null
  while (%i <= $hget(WhyHelpQueue,0).item) {
    var %itemNick = $hget(WhyHelpQueue,%i).item
    var %itemVal = $hget(WhyHelpQueue,%i).data
    if (%itemVal == 1) {
      %secilen = %itemNick
      break
    }
    inc %i
  }

  if (%secilen) && (%secilen ison %chan) {
    hadd WhyHelpStatus aktif_user %secilen
    hdel WhyHelpQueue %secilen
    WhyHelpSirariGuncelle

    if ($me isop %chan) { .mode %chan +v %secilen }

    .msg %chan 09[HELP ASİSTAN] 03Sayın 12 %secilen 03, sıra size geldi! Şimdi sizinle ilgileniyorum.
    .msg %chan 03Hazır mIRC script kodları, servis soruları veya koruma taleplerinizi 14!soru <Sorunuz> 03 formatıyla yazabilirsiniz.
    .msg %chan 04[BİLGİ] 1215 saniye içinde soru sormazsanız oturumunuz sonlandırılacaktır!

    .timerHelp15Sn_ $+ %secilen -m 1 15000 WhyHelpCevapsizKapat %chan %secilen
    .timerHelpSure_ $+ %secilen -m 1 110000 .msg %chan 04[UYARI] 12 %secilen 04, kanalımızdaki sürenizin bitmesine son 10 saniye kaldı, birazdan voice yetkiniz alınacaktır!
    .timerHelpDevoice_ $+ %secilen -m 1 120000 WhyHelpSuresiDoldu %chan %secilen
  }
  else {
    if (%secilen) { hdel WhyHelpQueue %secilen | WhyHelpSirariGuncelle }
    WhyHelpSiradakiIsle %chan
  }
}

alias WhyHelpSirariGuncelle {
  var %i = 1, %yeniSira = 1
  while (%i <= $hget(WhyHelpQueue,0).item) {
    var %itemNick = $hget(WhyHelpQueue,%i).item
    hadd WhyHelpQueue %itemNick %yeniSira
    inc %yeniSira
    inc %i
  }
}

alias WhyHelpCevapsizKapat {
  var %chan = $1, %nick = $2
  if ($hget(WhyHelpStatus,aktif_user) == %nick) && (%nick ison %chan) {
    hinc WhyHelpStats cozulemeyen
    .msg %chan 09[HELP ASİSTAN] 12 %nick 03, 15 saniye içinde herhangi bir soru iletmediğiniz için teşekkür eder, iyi günler dileriz!
    if ($me isop %chan) { .mode %chan -v %nick }

    if ($timer(HelpSure_ $+ %nick)) { .timerHelpSure_ $+ %nick off }
    if ($timer(HelpDevoice_ $+ %nick)) { .timerHelpDevoice_ $+ %nick off }

    hdel WhyHelpStatus aktif_user
    WhyHelpSiradakiIsle %chan
  }
}

alias -l WhyHelpSuresiDoldu {
  var %chan = $1, %nick = $2
  if (%nick ison %chan) {
    if ($me isop %chan) { .mode %chan -v %nick }
    .notice %nick 04[SÜRE BİTTİ] 12Help kanalındaki 2 dakikalık süreniz dolduğu için voice yetkiniz kaldırılmıştır.
  }
  hdel WhyHelpStatus aktif_user
  WhyHelpSiradakiIsle %chan
}

; !soru <soru metni>  -> regml(1) = soru metni
on 1:TEXT:/^!soru\s+(.+)$/i:#help: {
  if ($nick == $me) { return }

  if ($hget(WhyHelpStatus,aktif_user) == $nick) {
    var %key = SoruCD_ $+ $nick
    if ($hget(WhyOpCmdCD,%key)) {
      .notice $nick [KORUMA] Yeni soru sormak için birkaç saniye bekleyin!
      return
    }
    hadd -u20 WhyOpCmdCD %key 1

    if ($timer(Help15Sn_ $+ $nick)) { .timerHelp15Sn_ $+ $nick off }

    var %soruMetni = $lower($regml(1))
    if (!%soruMetni) {
      .notice $nick Kullanım: !soru <Servis, Komut veya Kod Sorunuz>
      return
    }

    .msg #help 09[YAPAY ZEKA] 03Sayın 12 $nick 03, sorduğunuz soru servis veritabanları ve web kaynaklarında aranıyor...

    .timerWhyServis1_ $+ $nick -m 1 2000 .msg #help 07[1. Adım] 14 NickServ, ChanServ, OperServ & MemoServ RFC dökümanları taranıyor...
    .timerWhyServis2_ $+ $nick -m 1 4000 .msg #help 07[2. Adım] 14 mIRC Script kod blokları ve güvenlik kayıtları sorgulanıyor...
    .timerWhyServis3_ $+ $nick -m 1 6000 WhyAIServisCevapVer $chan $nick "%soruMetni"

    if ($window(#opers)) || ($chan(#opers)) {
      .msg #opers 14[AI SERVİS/WEB] 12 $nick 03 sorguladı: 07 "!soru %soruMetni"
    }
  }
}

alias WhyAIServisCevapVer {
  var %chan = $1, %nick = $2, %soru = $3-
  if (%nick ison %chan) {
    hinc WhyHelpStats cozulen
    hinc WhyHelpStats site_yardim

    if ($regex(%soru,/(gline|akill|ban|yasak|kaldır|acarim|nasıl açarım)/i)) {
      .msg %chan 09[WEB ARAMA SONUCU - OPERSERV] 03Aradığınız G-Line / Akill kaldırma çözümü:
      .msg %chan 07 Sunucudan atılan global banları kaldırmak için OperServ yetkinizle şu komutu kullanmalısınız:
      .msg %chan 14 /os UNGLINE <maske_veya_ip> 07 veya 14 /os UNAKILL <maske_veya_ip>
      return
    }

    if ($regex(%soru,/(nick|şifre|unuttum|şifremi|register|identify)/i)) {
      .msg %chan 09[WEB ARAMA SONUCU - NICKSERV] 03Aradığınız NickServ hesap çözümü:
      .msg %chan 14 /ns RECOVER <nick> <şifre> 07 veya 14 /ns DROP <nick> 07komutlarını kullanabilirsiniz.
      return
    }

    if ($regex(%soru,/(kanal|chanserv|op al|kanal şifre|founder)/i)) {
      .msg %chan 09[WEB ARAMA SONUCU - CHANSERV] 03Aradığınız ChanServ kanal çözümü:
      .msg %chan 14 /cs IDENTIFY <kanal> <şifre> 07 veya 14 /cs ACCESS <kanal> ADD <nick> <seviye>
      return
    }

    if ($regex(%soru,/(küfür|argo|badword|küfür koruma)/i)) {
      .msg %chan 09[HAZIR KOD - KÜFÜR KORUMASI] 03Küfür koruma mIRC script kodu:
      .msg %chan 07 on @*:TEXT:*:#: { if ($regex($1-,/(küfür1|küfür2)/i)) { .kick $chan $nick Küfür yasaktır! | .ban -u300 $chan $nick 2 } }
      return
    }

    if ($regex(%soru,/(reklam|link|site|reklam koruma)/i)) {
      .msg %chan 09[HAZIR KOD - REKLAM KORUMASI] 03Reklam koruma mIRC script kodu:
      .msg %chan 07 on @*:TEXT:*:#: { if ($regex($1-,/(www\.|http:|https:|\.com|\.net|\.org)/i)) { .kick $chan $nick Reklam yasaktır! | .ban -u600 $chan $nick 2 } }
      return
    }

    if ($isalias(WhyWebAramaBaslat)) {
      WhyWebAramaBaslat %chan %nick %soru
    }

    if ($window(#opers)) || ($chan(#opers)) {
      .msg #opers 04[AI BİLGİ] 12 $nick 03 için web araması başlatıldı: 07 %soru
    }
  }
}

on *:PART:#help: { WhyHelpTemizlik $nick $chan }
on *:QUIT: { WhyHelpTemizlik $nick #help }
on *:KICK:#help: { if ($knick) { WhyHelpTemizlik $knick $chan } }

alias WhyHelpTemizlik {
  var %nick = $1, %chan = $2
  if ($hget(WhyHelpQueue,%nick)) { hdel WhyHelpQueue %nick | WhyHelpSirariGuncelle }
  if ($timer(Help15Sn_ $+ %nick)) { .timerHelp15Sn_ $+ %nick off }
  if ($timer(HelpSure_ $+ %nick)) { .timerHelpSure_ $+ %nick off }
  if ($timer(HelpDevoice_ $+ %nick)) { .timerHelpDevoice_ $+ %nick off }

  if ($hget(WhyHelpStatus,aktif_user) == %nick) {
    hdel WhyHelpStatus aktif_user
    WhyHelpSiradakiIsle %chan
  }
}
________________

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