IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   Badnick.tcl - kanal koruma (https://www.ircforumlari.net/tcl-scriptler/451319-badnicktcl-kanal-koruma.html)

Heartbroken 10 Şubat 2012 05:02

Badnick.tcl - kanal koruma
 
Selam...

bir zamanlar yetkili olduğum bir uluslararası sunucudaki (artık böyle bir yer yok) resmi yardım kanallarını korumakla yetkilendirilmiş eggdroplar için kullandığımız, o sunucudaki coderlar tarafından zamanla ekler yapılarak bu sunucu için geliştirilmiş koruma kodlarından birini burda paylaşıyorum...

Kodun belli bir yazarı-sahibi olduğunu söylemek zor ''anonim'' olduğunu söylemek daha doğru olacaktır sanırım.

bu kod ne yapar -nasıl çalışır?

öncelikle botun op (@) olması gerekir. op olduğu kanallarda en az halfop (%) yetkisine sahip kanal yetkilileri bu kod için kullanılan .

!addbadnick rumuz*!*@* ban sebebi (alternatif olarak !addban komutu)
!rembadnick rumuz*!*@* (alternatifi !remban komutu)
!listbadnick (alternatifleri !listbadnicks yada !listbans komutları) kullanılabilir.


eklenen banlar botun oluşturduğu user-kullanıcı dosyası içinde her kanal için bans-banlar listesi içinde eklenir-listelenir.

ban eklerken sadece rumuz-nicke değil idente - host mask'e yada bunların belirlenen kısımlarına wildcard kullanarak ban eklemek mümkün..

örnek vermek gerekirse.

!addbadnick *!k?t?k*@* ban sebebi buraya bir boşlukla yazın
!addbadnick [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] banlandın gülüm..
!addban [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] de get..

vs vs .. gibi..

tabiki ingilizce bir koddu sizlerin kullanabileceğiniz şekilde lüzumlu yerlerini Türkçe'ye çevirmeye çalıştım.. halen aktif olarak etkin bir şekilde kullanılan hızlı,etkili bir kanal koruma kodudur. sanırım işinize yarayacaktır.

güle güle kullanın..

Kod:

set badnick_version "2.4.4"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# AYARLAR
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
namespace eval ::badnick {
    # BINDS
    set binds(list)    "!ListBadNick !ListBadNicks !ListBans"
    set binds(add)      "!AddBadNick !AddBan"
    set binds(delete)  "!RemBadNick !RemBan"
    # özelde okutulacak banlist'in uzunluğu ne kadar olsun? (sunursuz olması için 0 girin)
    set cfg(maxlist) 120
    # rapor gönderilecek admin kanalı girin
    set cfg(adminchan) "#admin-abiler"
    # hata raporlarının gösterileceği kanal (gerekli değilse boş bırakın)...
    set cfg(debug) "#ağır-abiler"
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# KURULUM SONU  -- ne yaptığınızı bilmiyorsanız bundan sonrasına dokunmayın :)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# init on rehash
set ::badnick::listbadnick 0
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc ::badnick::binding { } {
    variable binds
    foreach { type triggers } [array get binds] {
        foreach trigger $triggers {
            bind pub - $trigger ::badnick::b${type}
        }
    }
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBANS - LISTBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc ::badnick::blist { nick uhost hand chan arg } {
    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return }
    variable listbadnick
    if { $listbadnick != 0 } {
        putserv "PRIVMSG $nick :Banlist'e şu an başka biri bakıyor .Daha sonra deneyin."
        return
    }
    set listbadnick [unixtime]${chan}
    set banlist [banlist $chan]
    set banlistlength [llength $banlist]
    if { $banlistlength == 0 } {
        puthelp "privmsg $nick : $chan kanalında ban listesi boş."
        set listbadnick 0
        return
    }
    proc isdigit {string} { regexp {^[0-9]+$} $string }
    # öntanımlı seçenekler
    set order      "date"
    set fulloutput  0
    set range      0
    # öntanımlı output
    set out(range)  ""
    foreach argument $arg {
        switch -glob -- [string tolower $argument] {
            "-h"        -
            "--help"    {
                putserv "notice $nick :Syntax: \002$::lastbind <options>\017. Valid options are:"
                putserv "notice $nick :\002--countonly\017 : returns the number of bans from $chan)"
                putserv "notice $nick :\002--full\017 : returns all the fields from each ban. --all is identical)"
                putserv "notice $nick :\002--sortby=<key>\017 : (<key> can be \002date\017, \002rdate\017, \002lastactive\017, \002rlastactive\017. Example: \002$::lastbind --sortby=rdate\017"
                putserv "notice $nick :\002--last=<num>\017 : return only <num> results. Example: \002$::lastbind --last=5\017"
                return
                set listbadnick 0
            }
            "-c"          -
            "--countonly" { set length [llength [banlist $chan]]
                            putserv "notice $nick :$chan Ban List has [expr { ($length == 0) ? "no" : $length }] bans."
                            set listbadnick 0
                            return
            }
            "-f"    -
            "--full" -
            "-a"    -
            "--all"  { set fulloutput 1 }
            "-s=*"          -
            "--sortby=*"    {
                switch -- $argument {
                    "--sortby=date"        { set order "date" }
                    "--sortby=rdate"        { set order "reverse date" }
                    "--sortby=lastactive"  { set order "last active date" }
                    "--sortby=rlastactive"  { set order "reverse last active date" }
                    default                {
                        ::badnick::report "$nick!$uhost @ $chan: Unknown --sortby argument: [lindex [split $argument "="] 1]"
                        putserv "notice $nick :Unknown --sortby argument: [lindex [split $argument "="] 1]"
                    }
                }
            }
            "-l=*"        -
            "--last=*"    {
                set range [lindex [split $argument "="] 1]
                if { ! [isdigit $range] } {
                    puthelp "notice $nick :The --last option accepts only integer digits."
                    ::badnick::report "$nick!$uhost @ $chan: Unknown --last argument: $range"
                    set range 0
                }
            }
            default    {
                ::badnick::report "$nick!$uhost @ $chan: Unknown argument: $argument"
                putserv "notice $nick :Unknown argument: $argument"
            }
        }
    }
    # banlist
    switch -- $order {
        "date"                      { set banlist [lsort -increasing -index 3 $banlist] }
        "reverse date"              { set banlist [lsort -decreasing -index 3 $banlist] }
        "last active date"          { set banlist [lsort -increasing -index 4 $banlist] }
        "reverse last active date"  { set banlist [lsort -decreasing -index 4 $banlist] }
        default                    { putlog "Bad sort option: $order" }
    }
    set out(order) ", sorted by $order"
    set length [llength $banlist]
    if { $length != $banlistlength } {
        set out(length) "$length bans on $banlistlength"
    } else {
        set out(length) "$banlistlength bans"
    }
    # Limit the output if requested
    # Suggest --last if the ban list is too long
    variable cfg
    if { $range != 0 } {
        set banlist [lrange $banlist end-[expr $range -1] end]
        set out(range) ", last $range bans"
    } elseif { $banlistlength > $cfg(maxlist) } {
            puthelp "notice $nick :Mevcud ban listesi $banlistlength uzunluğunda.., lütfen --last seçeneğini kullanın. Örnek: $::lastbind [join $arg] --last=$cfg(maxlist)"
            set listbadnick 0
            return
    }
 
    set out(start) [string map[list "@length" $out(length) "@order" $out(order) "@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge" $out(range)] "Ban listesi $chan kanalı (@length@order@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge):"]
    puthelp "PRIVMSG $nick :$out(start)"
    foreach ban $banlist {
        # *!*@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] {"some tests in progress"} 0 1166470558 0 ToM
        # hostmask, comment, expiration timestamp, time added, last time active, creator
        #    0        1              2                3              4            5
        # ban mask
        set banmask [lindex $ban 0]
        # yorum
        set bancomment [lindex $ban 1]
        # expire - not used, all are perm
        # set banexpire [ctime [expr [lindex $ban 2]]]
        # eklendiği zaman
        set bantimeadded [clock format [lindex $ban 3] -format "%Y/%m/%d %H:%M"]
        # son aktıf zaman
        if { [lindex $ban 4] == 0 } {
            set banlastactive "Never"
        } else {
            set banlastactive [clock format [lindex $ban 4] -format "%Y/%m/%d %H:%M"]
        }
        # creator
        set bancreator [lindex $ban 5]
        if { $fulloutput == 1 } {
            puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) - $bancreator tarafından ($bantimeadded - Last active: $banlastactive) eklendi."
        } else {
            puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) $bancreator tarafından eklendi."
        }
    }
    puthelp "PRIVMSG $nick : $chan kanalı için ban listesi sonu."
    set listbadnick 0
    return
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBAN - ADDBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc ::badnick::badd { nick uhost hand chan arg } {
    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
        return 0
    }
    set victim [lindex [split $arg] 0]
    if { $victim == "" } {
        puthelp "NOTICE $nick :Bir nick/mask ve bir sebep belirtiniz lütfen."
        return 0
    }
    set reason [join [lrange [split $arg] 1 end]];
    if { $reason == "" } {
        puthelp "NOTICE $nick :Bir sebep belirtiniz lütfen."
        return 0
    }
 
    if { [string first "!" $victim ] == -1 && [string first "@" $victim ] == -1 } {
        # Turn the single nick to a complete hostmask
        set banmask "$victim!*@*"
    } else {
        # Trying to correct the wrong masks
        set banmask $victim
        if { [string equal [string range $banmask 0 0] "!"] }      { set banmask "*$banmask" }
        if { [string equal [string range $banmask end end] "!"] }  { set banmask "$banmask*@*" }
        if { [string equal [string range $banmask end end] "@"] }  { set banmask "$banmask*" }
        set banmask [string map {"!@" "!*@"} $banmask]
    }
    # Final test
    if { ! [regexp -- {^[^!@]+![^!@]+@[^!@]+$} $banmask] } {
        puthelp "NOTICE $nick :Görünüşe göre\002 $victim\002 hatalı bir mask. Doğru bir nick!ident@host mask girdiğinize emin olunuz."
        ::badnick::report "!AddBan: $nick!$uhost @ $chan: hatalı mask ($victim): $arg"
        return 0
    }
    # Let's add the ban now !
    if { [isban $banmask $chan] } {
        set out "$banmask halihazırda ban listesinde var. Ban sebebi değiştirildi. \"$reason\"."
    } else {
        set out "$banmask $chan kanalında ban liste eklendi."
    }
    newchanban $chan $banmask $nick $reason 0 none
    puthelp "NOTICE $nick :$out"
}
 
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBAN - REMBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc ::badnick::bdelete { nick uhost hand chan arg } {
    if { ! [isop $nick $chan] && ! [ishalfop $nick $chan] } {
        return 0
    }
    if { $arg == "" } {
        puthelp "NOTICE $nick :Bana hangi banı kaldırmak istediğinizi yazmalısınız.. Böyle deneyiniz. \002$::lastbind --help\017"
        return 0
    }
    if { [lindex $arg 0] == "--help" || [lindex $arg 0] == "-h" } {
        puthelp "NOTICE $nick :Syntax: \002$::lastbind <masks>\017 (Birkaç mask verebilirsiniz, aralarında boşluk bırakınız)."
        return 0
    }
    set removed [list] ; set notfound [list] ; set missed [list]
    foreach mask [lrange $arg 0 end] {
        if { [string first "!" $mask ] == -1 } {
            append mask "!*@*"
        }
        if { [killchanban $chan $mask] } {
            lappend removed $mask
        } elseif { [isban $mask $chan] } {
            # This should never happen
            lappend missed $mask
        } else {
            lappend notfound $mask
        }
    }
    proc banbans { masklist } {
        return [expr { ([llength $masklist] == 1) ? "Ban" : "Bans" }]
    }
    if { [llength $removed] }  {
        putserv "notice $nick :[banbans $removed] başarıyla kaldırıldı.: [join $removed ", "]"
    }
    if { [llength $notfound] } {
        putserv "notice $nick :[banbans $notfound] $chan kanalı Ban Listinde \002Bulunamadı\017  $chan Ban List: [join $notfound ", "]"
    }
    if { [llength $missed] }  {
        putserv "notice $nick :\002Bir \0034Hata\003 oluştu [banbans $missed]\017: [join $missed ", "] ... :("
        putserv "privmsg $::badnick::cfg(adminchan) :Bu banları kaldırırken bir hata oluştu: [join $missed ", "] ( $nick!$uhost tarafından $chan kanalında)"
    }
    return
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Araçlar
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc ::badnick::edebug { text } {
    variable cfg
    if { $cfg(debug) == "" } { return }
    putserv "privmsg $cfg(debug) :\00315(badnick) $text\017"
}
proc ::badnick::report { text } {
    variable cfg
    if { $cfg(adminchan) == "" } { return }
    putserv "privmsg $cfg(adminchan) :<BadNick.tcl> $text"
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
catch ::badnick::uninstall
::badnick::binding
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind evnt - prerehash ::badnick::uninstall
proc ::badnick::uninstall { args } {
    foreach bind [binds [namespace current]::*] {
        foreach {a b c d e} $bind break
        unbind $a $b $c $e
    }
    namespace delete [namespace current]
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadNick v$badnick_version loaded."


house 10 Şubat 2012 06:31

Cevap: Badnick.tcl - kanal koruma
 
Bu TCL yi 2 gün önce indirip kullandım evet bu türkçe versiyonu gayet güzel. Ama sevmediğim bir yanı var mesela opers kanalında tek komutla tüm kanallarda badnick eklemiyo. Kanalların hepsine tek tek eklemek zorunda kalıyoruz. Wildcard kullanımına izin veriyo ve host felan eklenebiliyo ident vs bu özelliği güzel. Ama tek komut olsa daha iyiydi kanımca. Herşeye rağmen mevcut en iyi badnick tcl bu bana göre. Eline sağlık.

Heartbroken 10 Şubat 2012 08:39

Cevap: Badnick.tcl - kanal koruma
 
Bu, daha ziyade kanal yetkililerinin kullanımına yönelik hazırlanmış.tabi her sunucunun yönetim şekli-anlayışı farklı .benim olduğum sunucuda sunucu yönetimi kanal içi işlere karışmazdı.kanal sahibi sunucu yetkilisine gel şunu hallet demediği sürece...sunucu yetkilileri adminler ircoplar vs.. sadece sunucuyu korumak kollamakla alakalıydı kanalı korumak tamamen o kanal yetkililerine bırakılmıştı...

buna benzer yazılmış-yayınlanmış-paylaşılmış bir iki kod mevcud ..ekleme-çıkarma-listeleme işi yapan ..ancak bu net üzerinde yabancı sitelerde paylaşılmış olanlardan farklı ,o sunucu için düzenlenmiş-geliştirilmişti..yerlide zaten olmaz ya yabancı sitelerde de olduğunu-paylaşıldığını sanmıyorum çünkü bunlara erişim sunucu yetkililerindeydi.. bende olmasının nedeni bu..

o sunucuda kullanmış olduğumuz başka koruma kodlarınıda peyderpey burda paylaşıcam...

Yunus 27 Nisan 2012 19:26

Cevap: Badnick.tcl - kanal koruma
 
Denedim fakat bot saçmalıyor , !listbadnick yazıyorum Ban listesi boş diyor.Badnick listesi boş demesi lazım.Ve wildcard kullanarak badnick ekleyemiyorum.

CLubber 27 Nisan 2012 19:55

Cevap: Badnick.tcl - kanal koruma
 
Bot db oluşturamıyor olabilir, kodu detaylı bir şekilde incelemek gerek yazan çok karmaşık yazmış.

Bu arada;

Alıntı:

!addbadnick [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] banlandın gülüm..

!addban *!adamim*@*.bilmemne.us de get..
Ban sebeplerine bayıldım, Heartbroken ;s49

saywhat 27 Nisan 2012 20:01

Cevap: Badnick.tcl - kanal koruma
 
Kod:

        puthelp "privmsg $nick : $chan kanalında ban listesi boş."
bu satırdaki yazıyı Badnick listesi boş yada istediğiniz şekilde değişebilirsiniz.çeviren böyle çevirmeyi uygun görmüş. bu sorun değil..

ancak çalışmıyor demişiniz asıl bu sorun...

botun .user dosyasında banın eklendiği her kanal için

ayrı ayrı:

Kod:

::#kanal-adı bans
- *!*5B27DB@*:+0:+1316267152:0:k_1:"do not PM users without asking permission first. "
- *!*AA482D@*:+0:+1315978361:0:Chief-Roc:"access denied"
- *!*99EE29@*:+0:+1315965113:0:k_1:"don't pm channel users without asking permission first. "
- *!*stevin@*:+0:+1315964904:0:k_1:"no way in.."
- *pthc*!*@*:+0:+1315742740:0:k_1:"forbidden for perverts"
- *!*2D7FA4@*:+0:+1315744919:0:k_1:" banned out !!"

şeklinde bu kodla eklenmiş ban listesi gözüküyor olmalı. (eğer kod düzgün çalışıyorsa)
bu kodla eklenen banlar direk olarak botun bot.user dosyasına kayıt ediliyor ..ayrı bir badnick.txt vs oluşturmuyor.

eğer sizin ekledikleriniz user dosyasında görünmüyorsa bir sorun var demektir.

bu kodun sağlamlığına kefil olabilirim çünkü bu kodu ana kanallarında,en kalabalık kanallarında kullanan en az iki yabancı sunucu adı verebilirim .son 10 yıldır bu kodu kullanıyorlar ..kodun sağlıklı işlemesi için bot.user dosyasını görebilmesi ve botun kanalda op olması gerekir.

Yunus 27 Nisan 2012 20:03

Cevap: Badnick.tcl - kanal koruma
 
Evet karışmış birbirine arkadaş çevirdim diyor belki o bir yerde hata yapmıştır.Bunun gibi ekleme/silme yapabileceğimiz bir tcl varmı bildiğiniz ?

saywhat 27 Nisan 2012 20:09

Cevap: Badnick.tcl - kanal koruma
 
buyrun size direk bu kodun orjinalini çevrilmemiş halini vereyim..bundan daha iyi badnick scripti piyasada yok. pek çoğunu denemiş biri olarak rahatlıkla söyleyebilirim.

not: kopyala -yapıştır yaparken Windows notepad ile eklenen kodlarda kayma bozulma bazı karakterlerin yok olması vs gibi problemler olabiliyor.bu tür kodlarda size bu kodları kaydetmek için [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] notepad++'yı önerebilirim bu tür sorunlar bunla olmaz copy-paste olayında..

Kod:

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# BADNICK.TCL
set badnick_version "2.3"
# PREVIOUS CHANGELOG:
# (removed the changelog entries about e-ops; using the eBotnet system made it unused)
# Unk: 12Jan2004: TODO: Allow these to be done in PM.. Find a way to doglobal securly.
# Unk: 11Jan2004: Initial creation
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# TODO:
#  Check the ban mask format, probably using a regexp.
#  Add a way to do it in PM.. bind msg o|o blahbadnick #chan *!*@*
#  Make the banlist date/time readable for humans :)
#
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# init on rehash
set listbadnick 0
unset listbadnick
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBANS - LISTBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'ListBadNick BadNick:pub:ListBadNick
bind pub - 'ListBadNicks BadNick:pub:ListBadNick
bind pub - 'ListBans BadNick:pub:ListBadNick
proc BadNick:pub:ListBadNick {nick uhost hand chan arg} {
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  global listbadnick
  if { [ info exists listbadnick ] == 1 } {
      putserv "PRIVMSG $nick :Someone is currently viewing a Banlist, please try again later."
      return 0
  }
 
  set listbadnick 1
  puthelp "PRIVMSG $nick :Start Internal Banlist for $chan:"
  foreach ban [banlist $chan] { 
      # hostmask, comment, expiration timestamp, time added, last time active, and creator
      # ban mask
      set banmask [lindex $ban 0]
      # comment
      set bancomment [lindex $ban 1]
      # expire - not used, all are perm
      # set banexpire [ctime [expr [lindex $ban 2]]]
      # time added
      set bantimeadded [ctime [expr [lindex $ban 3]]]
      # time last active
      set banlastactive [ctime [expr [unixtime] - [lindex $ban 4]]]
      # creator
      set bancreator [lindex $ban 5]
 
      if { $arg == "full" | $arg == "all" } {
        puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) added by $bancreator on $bantimeadded (Last active: $banlastactive)"
      } elseif { $arg == "raw" } {
        puthelp "PRIVMSG $nick :$chan Banlist: $ban"
      } else {
        puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) by $bancreator"
      }
 
  }
  puthelp "PRIVMSG $nick :End Internal Banlist for $chan"
  unset listbadnick
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBAN - ADDBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'AddBadNick BadNick:pub:AddBadNick
bind pub - 'AddBan BadNick:pub:AddBadNick
proc BadNick:pub:AddBadNick {nick uhost hand chan arg} {
  # Where the hell does this come from ??
  global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  set name [lindex [split $arg] 0]
      set reason [join [lrange [split $arg] 1 end]];
      if { $reason == "" } {
      puthelp "NOTICE $nick :Please provide a reason."
      return 0
  }
  # No need to retest the reason, we just did it...
  if { ($name == "") || ($reason == "") } {
      puthelp "NOTICE $nick :Please provide a name and a reason."
      return 0
  }
  if {( [string first "!" $name ] == -1 )} {
      newchanban $chan $name!*@* $nick \"$reason\" 0 none
      puthelp "NOTICE $nick :$name!*@* should be added to $chan nickban list."
  } else {
      newchanban $chan $name $nick \"$reason\" 0 none
      puthelp "NOTICE $nick :$name should be added to $chan nickban list."
  }
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBAN - REMBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'RemBadNick BadNick:pub:RemBadNick
bind pub - 'RemBan BadNick:pub:RemBadNick
proc BadNick:pub:RemBadNick {nick uhost hand chan arg} {
  # Where the hell does this come from ??
  global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
 
  if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
      return 0
  }
 
  if { ($arg == "") } {
      puthelp "NOTICE $nick :You need to tell me which ban to remove =)"
      return 0
  }
  set name [lindex $arg 0]
 
  if {( [string first "!" $name ] == -1 )} {
      if ([killchanban $chan $name!*@*]) {
        puthelp "NOTICE $nick :$name!*@* should be removed from $chan nickban list"
      } else {
        puthelp "NOTICE $nick!*@* :Nickban wasn't removed."
      }
      return 0
  }
 
  if ([killchanban $chan $name]) {
      puthelp "NOTICE $nick :$name should be removed from $chan nickban list"
  } else {
      puthelp "NOTICE $nick :Nickban wasn't removed!"
  }
 
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FILTER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc BadNick:filter {str} {
#  regsub -all --
{\003[0-9]{0,2}(,[0-9]{0,2})?|\017|\037|\002|\026|\006|\007} $str "" str
  regsub -all -nocase {[^a-z*?@!]} $str "" str
  return $str
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadNick v$badnick_version loaded."


Yunus 27 Nisan 2012 20:11

Cevap: Badnick.tcl - kanal koruma
 
Alıntı:

saywhat Nickli Üyeden Alıntı (Mesaj 1041103304)
Kod:

        puthelp "privmsg $nick : $chan kanalında ban listesi boş."
bu satırdaki yazıyı Badnick listesi boş yada istediğiniz şekilde değişebilirsiniz.çeviren böyle çevirmeyi uygun görmüş. bu sorun değil..

ancak çalışmıyor demişiniz asıl bu sorun...

botun .user dosyasında banın eklendiği her kanal için

ayrı ayrı:

Kod:

::#kanal-adı bans
- *!*5B27DB@*:+0:+1316267152:0:k_1:"do not PM users without asking permission first. "
- *!*AA482D@*:+0:+1315978361:0:Chief-Roc:"access denied"
- *!*99EE29@*:+0:+1315965113:0:k_1:"don't pm channel users without asking permission first. "
- *!*stevin@*:+0:+1315964904:0:k_1:"no way in.."
- *pthc*!*@*:+0:+1315742740:0:k_1:"forbidden for perverts"
- *!*2D7FA4@*:+0:+1315744919:0:k_1:" banned out !!"

şeklinde bu kodla eklenmiş ban listesi gözüküyor olmalı. (eğer kod düzgün çalışıyorsa)
bu kodla eklenen banlar direk olarak botun bot.user dosyasına kayıt ediliyor ..ayrı bir badnick.txt vs oluşturmuyor.

eğer sizin ekledikleriniz user dosyasında görünmüyorsa bir sorun var demektir.

bu kodun sağlamlığına kefil olabilirim çünkü bu kodu ana kanallarında,en kalabalık kanallarında kullanan en az iki yabancı sunucu adı verebilirim .son 10 yıldır bu kodu kullanıyorlar ..kodun sağlıklı işlemesi için bot.user dosyasını görebilmesi ve botun kanalda op olması gerekir.

Kodun düzgün çalışıp çalışmadiğindan emin olmadiğin halde nasıl kefil olabiliyorsun ? Bence önce kendin bu kodu denemelisin ondan sonra bu mesajı yazmaliydin.Yinede ilgin için tşkler.

saywhat 27 Nisan 2012 20:16

Cevap: Badnick.tcl - kanal koruma
 
yaklaşık 8 yıl kadar bu kodla tecrübem var ..aksi halde o bot.user dosyasındaki ban mesajlarını size gösteremezdim..buna erişimim olmazdı ve bu kodun 3-4 farklı versionu orijinalleri elimde olmazdı...

house 27 Nisan 2012 20:38

Cevap: Badnick.tcl - kanal koruma
 
TCL 'nin Türkçe'ye çevrilmiş hali, şu an kullandığım ve %100 çalışan son halini paylaşıyorum.

Komutlar şöyle;

!badekle Nick ( wildcard kullanımı var, Ni?k!*@* veya nick!ident@host şeklinde kullanabilirsiniz. )


!badsil Nick ( wildcard veya host & ip yazılabilir gene, silmek için bu da )

!banekle Nick ( aynı şekilde ekler lakin kalıcı ban ekler, -b yapılsa bile bot gene +b yapar kendisi )
!bansil Nick ( bu da kalıcı ban siler )


Kod:

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# BADNICK.TCL

set badnick_version "2.4.4"

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Copyright (c) 2006 AzaToM - ToM@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].MindForge.org

#                          - skiidoo@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].freenode.net

#                          - [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

#

# This program is free software; you can redistribute it and/or

# modify it under the terms of the GNU General Public License

# as published by the Free Software Foundation; either

# version 2 of the License, or (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License for more details.

#

# You should have received a copy of the GNU General Public License

# along with this program; if not, see write to the Free Software

# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# DESCRIPTION:

#    Handles the banlist ...

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# CHANGELOG:

# v1.0 - John

#    Script creation

# v2.1 - ToM

#    Script rewriting: all e-ops is now handled by getmodes.tcl

#    Added !ListBadNickS (with an S)

#    Restructured and simplified the code

#    RemBadNick & AddBadNick: Added a warning if no reason is given.

# v2.2

#    Made the banlist items displaying a human readable format.

#    ListBadNicks is now locked only while someone is already viewing a list.

# v2.3

#    !ListBans has an argument ("all" or "full") to display the banlist with details

# v2.3.1

#    We now check if the mask given to !addbadnick is a valid hostmask

#    Removed the BadNick:filter proc - not used anywhere...

# v2.3.2

#  Fixed the last active date.

# v2.3.3

#  Gives the banlist length at the beginning of !ListBadNick

# v2.4.0

#  Implements some switches: --all --full --sortby=*

#  Fixes the last active date being 1970...



# v2.4.1

#  Uses namespaces

#  --last and maximal output lines setting

# v2.4.2

#  Improves the mask correction

#  If the ban already exists, updates its reason

# v2.4.3

#  !RemBadNick accepts several masks, and returns a complete report

#  !ListBadNicks --countonly

#  Added short options (-h -a -f -c -l -s)

# v2.4.4

#  Improves the mask correction

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# TODO:

#  - Add a way to do it in PM.. bind msg o|o blahbadnick #chan *!*@*

#  - !AddBan: check if an existing ban is not already covering the given mask

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# CONFIGURATION

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

namespace eval ::badnick {



    # BINDS

    set binds(list)    "!Liste !Topluliste !Banlananlar"

    set binds(add)      "!Badekle !Banekle"

    set binds(delete)  "!Badsil !Bansil"



    # Maximal length of a banlist to be sent by PM (set to 0 to unlimit)

    set cfg(maxlist) 120



    # Admin channel where the reports will be sent

    set cfg(adminchan) "#Opers"



    # Debug messages go to (leave empty to disable)...

    set cfg(debug) "#Opers"



}





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# END OF CONFIGURATION - Do not edit below until you know what you are doing :)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



# init on rehash

set ::badnick::listbadnick 0





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# BINDING

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



proc ::badnick::binding { } {

    variable binds

    foreach { type triggers } [array get binds] {

        foreach trigger $triggers {

            bind pub - $trigger ::badnick::b${type}

        }

    }

}





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# LISTBANS - LISTBADNICK

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



proc ::badnick::blist { nick uhost hand chan arg } {



    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return }



    variable listbadnick

    if { $listbadnick != 0 } {

        putserv "PRIVMSG $nick :Ban listesine şu an başkası bakıyor, birazdan tekrar deneyin."

        return

    }

    set listbadnick [unixtime]${chan}



    set banlist [banlist $chan]

    set banlistlength [llength $banlist]



    if { $banlistlength == 0 } {

        puthelp "privmsg $nick :Belirtilen $chan İçin ban listesi boş."

        set listbadnick 0

        return

    }



    proc isdigit {string} { regexp {^[0-9]+$} $string }



    # Default options

    set order      "date"

    set fulloutput  0

    set range      0

    # Default output

    set out(range)  ""



    foreach argument $arg {

        switch -glob -- [string tolower $argument] {

            "-h"        -

            "--help"    {

                putserv "notice $nick :Kullanım: \002$::lastbind <seçenekler>\017. Geçerli seçenekler:"

                putserv "notice $nick :\002--countonly\017 : Kanal için ban listesini gösterir: $chan)"

                putserv "notice $nick :\002--full\017 : Her bandaki her boşluğu belirtir --all geneldir.)"

                putserv "notice $nick :\002--sortby=<key>\017 : (<key> can be \002date\017, \002rdate\017, \002lastactive\017, \002rlastactive\017. Example: \002$::lastbind --sortby=rdate\017"

                putserv "notice $nick :\002--last=<num>\017 : return only <num> results. Example: \002$::lastbind --last=5\017"

                return

                set listbadnick 0

            }

            "-c"          -

            "--countonly" { set length [llength [banlist $chan]]

                            putserv "notice $nick :$chan Ban Listesi [expr { ($length == 0) ? "no" : $length }] şeklinde.."

                            set listbadnick 0

                            return

            }

            "-f"    -

            "--full" -

            "-a"    -

            "--all"  { set fulloutput 1 }

            "-s=*"          -

            "--sortby=*"    {

                switch -- $argument {

                    "--sortby=date"        { set order "date" }

                    "--sortby=rdate"        { set order "reverse date" }

                    "--sortby=lastactive"  { set order "last active date" }

                    "--sortby=rlastactive"  { set order "reverse last active date" }

                    default                {

                        ::badnick::report "$nick!$uhost @ $chan: Unknown --sortby argument: [lindex [split $argument "="] 1]"

                        putserv "notice $nick :Unknown --sortby argument: [lindex [split $argument "="] 1]"

                    }

                }

            }

            "-l=*"        -

            "--last=*"    {

                set range [lindex [split $argument "="] 1]

                if { ! [isdigit $range] } {

                    puthelp "notice $nick :The --last option accepts only integer digits."

                    ::badnick::report "$nick!$uhost @ $chan: Unknown --last argument: $range"

                    set range 0

                }

            }

            default    {

                ::badnick::report "$nick!$uhost @ $chan: Unknown argument: $argument"

                putserv "notice $nick :Unknown argument: $argument"

            }

        }

    }



    # Sort the banlist

    switch -- $order {

        "date"                      { set banlist [lsort -increasing -index 3 $banlist] }

        "reverse date"              { set banlist [lsort -decreasing -index 3 $banlist] }

        "last active date"          { set banlist [lsort -increasing -index 4 $banlist] }

        "reverse last active date"  { set banlist [lsort -decreasing -index 4 $banlist] }

        default                    { putlog "Bad sort option: $order" }

    }

    set out(order) ", sorted by $order"



    set length [llength $banlist]

    if { $length != $banlistlength } {

        set out(length) "$length bans on $banlistlength"

    } else {

        set out(length) "$banlistlength bans"

    }



    # Limit the output if requested

    # Suggest --last if the ban list is too long

    variable cfg

    if { $range != 0 } {

        set banlist [lrange $banlist end-[expr $range -1] end]

        set out(range) ", last $range bans"

    } elseif { $banlistlength > $cfg(maxlist) } {

            puthelp "notice $nick :Ban listesi $banlistlength banları uzun, lütfen --last eçeneğini kullanın. Örnek: $::lastbind [join $arg] --last=$cfg(maxlist)"

            set listbadnick 0

            return

    }





    set out(start) [string map [list "@length" $out(length) "@order" $out(order) "@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge" $out(range)] "Dahili ban listesi başlangıcı: $chan (@length@order@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ge):"]

    puthelp "PRIVMSG $nick :$out(start)"



    foreach ban $banlist {

        # *!*@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] {"some tests in progress"} 0 1166470558 0 ToM

        # hostmask, comment, expiration timestamp, time added, last time active, creator

        #    0        1              2                3              4            5



        # ban mask

        set banmask [lindex $ban 0]

        # comment

        set bancomment [lindex $ban 1]

        # expire - not used, all are perm

        # set banexpire [ctime [expr [lindex $ban 2]]]

        # time added

        set bantimeadded [clock format [lindex $ban 3] -format "%Y/%m/%d %H:%M"]

        # time last active

        if { [lindex $ban 4] == 0 } {

            set banlastactive "Never"

        } else {

            set banlastactive [clock format [lindex $ban 4] -format "%Y/%m/%d %H:%M"]

        }

        # creator

        set bancreator [lindex $ban 5]



        if { $fulloutput == 1 } {

            puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) - by $bancreator ($bantimeadded - Son aktivite: $banlastactive)"

        } else {

            puthelp "PRIVMSG $nick :$chan: $banmask ($bancomment) by $bancreator"

        }

    }

    puthelp "PRIVMSG $nick :Ban listesi sonu: $chan"

    set listbadnick 0

    return



}







#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# ADDBAN - ADDBADNICK

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

proc ::badnick::badd { nick uhost hand chan arg } {



    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {

        return 0

    }



    set victim [lindex [split $arg] 0]

    if { $victim == "" } {

        puthelp "PRIVMSG $chan :Lütfen bir nick/maske ve sebep belirtin."

        return 0

    }

    set reason [join [lrange [split $arg] 1 end]];

    if { $reason == "" } {

        puthelp "PRIVMSG $chan :Lütfen sebep de belirtin."

        return 0

    }





    if { [string first "!" $victim ] == -1 && [string first "@" $victim ] == -1 } {

        # Turn the single nick to a complete hostmask

        set banmask "$victim!*@*"

    } else {

        # Trying to correct the wrong masks

        set banmask $victim

        if { [string equal [string range $banmask 0 0] "!"] }      { set banmask "*$banmask" }

        if { [string equal [string range $banmask end end] "!"] }  { set banmask "$banmask*@*" }

        if { [string equal [string range $banmask end end] "@"] }  { set banmask "$banmask*" }

        set banmask [string map {"!@" "!*@"} $banmask]

    }



    # Final test

    if { ! [regexp -- {^[^!@]+![^!@]+@[^!@]+$} $banmask] } {

        puthelp "PRIVMSG $chan :Görünen o ki \002$victim\002 Geçerli bir maske değil. Şöyle kullandığınızdan emin olun: nick!ident@host gibi."

        ::badnick::report "!AddBan: $nick!$uhost @ $chan: Yanlış maske: ($victim): $arg"

        return 0

    }



    # Let's add the ban now !

    if { [isban $banmask $chan] } {

        set out "$banmask listede zaten var. Sadece sebebi \"$reason\". şeklinde değiştirdim."

    } else {

        set out "$banmask eklendi: $chan ban listesi."

    }

    newchanban $chan $banmask $nick $reason 0 none

    puthelp "NOTICE $nick :$out"

}









#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# REMBAN - REMBADNICK

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



proc ::badnick::bdelete { nick uhost hand chan arg } {



    if { ! [isop $nick $chan] && ! [ishalfop $nick $chan] } {

        return 0

    }



    if { $arg == "" } {

        puthelp "NOTICE $nick :Hangi banı temizleyeceğimiz söylemelisiniz. Örneğin: \002$::lastbind --help\017"

        return 0

    }



    if { [lindex $arg 0] == "--help" || [lindex $arg 0] == "-h" } {

        puthelp "NOTICE $nick :Kullanım: \002$::lastbind <masks>\017 (Aynı anda boşluk bırakarak birden fazla mask kullanabilirsiniz.)."

        return 0

    }



    set removed [list] ; set notfound [list] ; set missed [list]

    foreach mask [lrange $arg 0 end] {

        if { [string first "!" $mask ] == -1 } {

            append mask "!*@*"

        }

        if { [killchanban $chan $mask] } {

            lappend removed $mask

        } elseif { [isban $mask $chan] } {

            # This should never happen

            lappend missed $mask

        } else {

            lappend notfound $mask

        }

    }



    proc banbans { masklist } {

        return [expr { ([llength $masklist] == 1) ? "Ban" : "Bans" }]

    }



    if { [llength $removed] }  {

        putserv "notice $nick :[banbans $removed] başarıyla silindi: [join $removed ", "]"

    }

    if { [llength $notfound] } {

        putserv "notice $nick :[banbans $notfound] \002Bulunamadı\017 in the $chan ban listesinde: [join $notfound ", "]"

    }

    if { [llength $missed] }  {

        putserv "notice $nick :\002Bir \0034hata\003 oluştu: [banbans $missed]\017: [join $missed ", "] ... :("

        putserv "privmsg $::badnick::cfg(adminchan) :Şu banları silerken hata oluştu: [join $missed ", "] (isteyen kişi: $nick!$uhost kanal: $chan)"

    }



    return



}





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# TOOLS

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

proc ::badnick::edebug { text } {

    variable cfg

    if { $cfg(debug) == "" } { return }

    putserv "privmsg $cfg(debug) :\00315(badnick) $text\017"

}



proc ::badnick::report { text } {

    variable cfg

    if { $cfg(adminchan) == "" } { return }

    putserv "privmsg $cfg(adminchan) :<BadNick.tcl> $text"

}





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# INIT

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



catch ::badnick::uninstall

::badnick::binding





#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# NAMESPACE MANAGEMENT

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



bind evnt - prerehash ::badnick::uninstall

proc ::badnick::uninstall { args } {

    foreach bind [binds [namespace current]::*] {

        foreach {a b c d e} $bind break

        unbind $a $b $c $e

    }

    namespace delete [namespace current]

}


CLubber 27 Nisan 2012 21:47

Cevap: Badnick.tcl - kanal koruma
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Paylaşımda bulunan ve size yardım etmek isteyenlere lütfen biraz daha saygılı olalım.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] zaten botun user dosyasına bakmasaydı çalışmadığını söylerdi.

Yunus 03 Mayıs 2012 09:46

Cevap: Badnick.tcl - kanal koruma
 
iLviR kod için tşkler .
Fakat kod ekleme/silme/listeleme yapıyor.Ancak ban veya kick atmıyor listedeki nick ve hostlara..

Diğer bir konu ise listelemeleri özele yapıyor.Listeleme yapılan kanal geneline yaptıramazmıyız ?

house 03 Mayıs 2012 19:47

Cevap: Badnick.tcl - kanal koruma
 
Selam, evet mümkün. Koddaki şu kısmı bulun;


Kod:

proc ::badnick::blist { nick uhost hand chan arg } {



    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return }



    variable listbadnick

    if { $listbadnick != 0 } {

        putquick "PRIVMSG $nick :Ban listesine şu an başkası bakıyor, birazdan tekrar deneyin."

        return

    }

    set listbadnick [unixtime]${chan}



    set banlist [banlist $chan]

    set banlistlength [llength $banlist]



    if { $banlistlength == 0 } {

        puthelp "privmsg $nick :Belirtilen $chan İçin ban listesi boş."

        set listbadnick 0

        return

    }

Ve Şu şekilde değiştirin;

Kod:

proc ::badnick::blist { nick uhost hand chan arg } {



    if { ![isop $nick $chan] && ![ishalfop $nick $chan] } { return }



    variable listbadnick

    if { $listbadnick != 0 } {

        putquick "PRIVMSG $chan :Ban listesine şu an başkası bakıyor, birazdan tekrar deneyin."

        return

    }

    set listbadnick [unixtime]${chan}



    set banlist [banlist $chan]

    set banlistlength [llength $banlist]



    if { $banlistlength == 0 } {

        puthelp "privmsg $chan :Belirtilen $chan İçin ban listesi boş."

        set listbadnick 0

        return

    }

Yani kısa bir anlatımla, $nick yazan yerleri $chan yaparsanız kanala aktaracaktır.


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

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk