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/)
-   -   badword.tcl -- kanal koruma (https://www.ircforumlari.net/tcl-scriptler/451323-badwordtcl-kanal-koruma.html)

Heartbroken 10 Şubat 2012 08:59

badword.tcl -- kanal koruma
 
Selam

sabahın erken saatlerinde paylaştığım badnick koruma scripti gibi buda eski* sunucularımda botların girdiği kanallarda kanal yetkililerin kullanımına ,o kanalın savunmasına yönelik bir script.

Adından anlaşılacağı üzere badword- kötü söz koruması..komutla botun op (@) olduğu kanalda en az halfop (%) ve üzeri kanal yetkililerinin ekleyip-sileceği ve listeleyeceği şekilde yapılmıştır.

kanalda accessi olan voice (+) ve üzeri kimselere bu koruma işlemez-muaf tutar.ayrıca kod içinde muaf tutulacak kelimelerin eklenebildiği bir bölümde mevcuttur.(bunu kendinize göre düzenlemeniz gerekecektir.)

uluslararası yabancı bir sunucudaki resmi yardım kanallarının koruma botlarında kullanılmış ve halen kullanılan bir kod olduğundan orjinali ingilizce idi. Burda paylaşmak için kendimce Türkçe'leştirdim ve kullanımınıza sunuyorum.

komutlar:

!addbadword kelime* sebep -> !addbadword *napyon* napıyon olcaktı tüh bak...

!rembadword kelime* -> !rembadword *napyon*

!listbadword

görüldüğü üzere wildcard kullanabilme imkanı var.kodun en üstünde badwordlerin saklanacağı .txt dosyasının yerini-dizini doğru şekilde belirtiniz.

ÖNEMLİ: kodda satır 210-222 arasında korumadan muaf tutulacak kelimelerin ekleneceği kısım vardır.bu kısmı kendinize göre düzenleyiniz.çoğaltıp -azaltabilirsiniz o satırları..

Örneğin: korumaya [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] yada [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] badword- kötü söz olarak eklemişinizdir.ancak bazı sitelerin yazılmasına tölerans göstermek istiyorsunuzudur .işte o bölümde bunları belirtmelisiniz.

umarım ki işinize yarayacaktır.Güle güle kullanın.

Kod:

set badword_version "1.3"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# KURULUM
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# eklenen kötü sözlerin kayıtedileceği dizini belirtin (sonu slash ile bitmeyecek şekilde)
set badword_cfg(datapath) "/home/broken/ircd/bot/scripts/BadWords"
# set badword_cfg(nameroot) "badwords-"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# KURULUM SONU - bu bölümden sonrasına ne yaptığınızı bilmiyorsanız dokunmamalısınız :)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBADWORD
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
####triggerların olduğu dosyaya yeni bir girdi eklemek için kullanılan prosedür
bind pub - !addbadword badword:pub:add
proc badword:pub:add { nick uhost handle chan arg } {
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 set word [swear:filter2 [string range $arg 0 [expr [string first " " $arg]-1]]]
 set reason [lrange $arg 1 end]
 if { $word == "" || $reason == "" } {
  puthelp "NOTICE $nick :Please provide a badword and a reason."
  return 0
 }
 
 # kontroller tamam.yeni bir girdi ekleyelim.
 global badword_cfg
 set file "$badword_cfg(datapath)/badword[string range $chan 1 end].txt"
 
 set write [open $file a]
 puts $write "$word#$reason"
 close $write
 puthelp "NOTICE $nick : $word kelimesi $chan kanalında kötü söz olarak eklendi."
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBADWORD
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bu prosedür daha önce eklenmiş kelimenin
# kanalında silinmesi içindir.
bind pub - !rembadword badword:pub:rem
proc badword:pub:rem { nick uhost handle chan badword } {
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 # scripti daha okunaklı hale getirir
 global badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # eger badword dosyası yoksa...
 if { ![file exists $badwordfile ] } {
  puthelp "NOTICE $nick : $chan kanalı için bir badword dosyası bulunamadı... Barış :)"
  return 0
 }
 
 set tempfile "$badword_cfg(datapath)/badword[string trimleft $chan #].bak"
 set readfirst [open $badwordfile r]
 set linenumb 0
 set count 0
 puthelp "NOTICE $nick :İşleniyor: Kötü Söz kaldırılıyor."
 while { ![eof $readfirst] } {
  gets $readfirst line
  set helpwanted [string range $line 0 [expr [string first # $line]-1]]
  if { $badword != $helpwanted } {
  if { $linenumb==0 } {
    set writetemp [open $tempfile w]
    puts $writetemp $line
    close $writetemp
    incr linenumb
  } else {
    set writetemp [open $tempfile a]
    puts $writetemp $line
    close $writetemp
    incr linenumb
  }
  } else {
  incr count
  puthelp "NOTICE $nick :($count):!addbadword $helpwanted [string range $line [expr [string first # $line]+1] end]"
  }
 }
 close $readfirst
 set readfirst2 [open $tempfile r]
 set linenumb2 0
 while { ![eof $readfirst2] } {
  gets $readfirst2 line
  if { [string first # $line] != -1 } {
  if { $linenumb2 == 0 } {
    set writetemp [open $badwordfile w]
    puts $writetemp $line
    close $writetemp
    incr linenumb2
  } else {
    set writetemp [open $badwordfile a]
    puts $writetemp $line
    close $writetemp
  }
  }
 }
 
 # bu dosyayı ne diye açtık bir hiç için ??
 # daha güçsüz bırakmak için mi ?
 if { $linenumb2 == 0 } {
  set writetemp [open $badwordfile w]
  close $writetemp
 }
 close $readfirst2
 puthelp "NOTICE $nick :Tamamlandı: Kötü Söz kaldırıldı."
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBADWORDS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Daha önce o kanal için eklenmiş tüm kötü sözler
# için soran yetkiliye listelenmesi prosedürü.
bind pub - !listbadword badword:pub:list
bind pub - !listbadwords badword:pub:list
proc badword:pub:list { nick uhost handle chan badword } {
 
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 
 # scripti daha okunaklı yapıyor
 global badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # eğer kötü söz dosyası yoksa...
 if { ![file exists $badwordfile ] } {
  puthelp "NOTICE $nick : $chan kanalı için oluşturulmuş bir Kötü Söz dosyası bulunamadı... Barış :)"
  return 0
 }
 
 set read [open $badwordfile r]
 set text ""
 while { ![eof $read] } {
  gets $read line
  set text "$text [lindex [split $line #] 0]"
 }
 close $read
 
 set finish [string range $text 1 [expr [string length $text]-2]]
 
 if { $finish == "" } {
  puthelp "NOTICE $nick : $chan kanalı için oluşturulmuş herhangi bir Kötü Söz listesi yok :)"
  return 0
 }
 
 # eğer ki eklenmiş kötü sözlerin sayısı çok ise.
 # listelerken satır aralıkları bırakacak yada satır nosu bildirilecek
 set long [split $finish]
 if { [llength $long] > 30 } {
  for { set c 0} { $c < [llength $long] } { incr c 30 } {
  if { $c == 0 } {
    puthelp "NOTICE $nick : $chan: kanalı için Kötü Sözler : 4[lrange $long $c [expr $c+29]]"
  } else {
    puthelp "NOTICE $nick : 4[lrange $long $c [expr $c+29]]"
  }
  }
 } else {
  puthelp "NOTICE $nick : $chan: kanalı için Kötü Sözler 4$finish"
 }
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# BADWORDS kontrol
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# kanal üstündeki yazışmalarda kötü söz kontrolünü
# yapan prosedür
# bind hepsi
bind pubm - "* *" badword:pubm:check
proc badword:pubm:check { nick uhost handle chan arg } {
 
 # yetkililere dokunma
 if { [isop $nick $chan] || [ishalfop $nick $chan] || [isvoice $nick $chan] } {
  return 0
 }
 
 # muaf kelimeleri ayrı tutma.
 if { [string match -nocase "*bir-kelime-girin*" $arg] } {
  return 0
 }
 if { [string match -nocase "*atmasın-bu kelimeleri*" $arg] } {
  return 0
 }
 if { [string match -nocase "*bundan-atmasın*" $arg] } {
  return 0
 }
 if { [string match -nocase "*böyle-çoğaltabilirsiniz*" $arg] } {
  return 0
 }
 
 # scripti daha okunaklı yapalım
 global BadwordWarn badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # kötü söz dosyası yoksa..
 if { ![file exists $badwordfile ] } {
  return 0
 }
 # kelimeleri kötü söz listesinde araştır
 set input " [swear:filter $arg] "
 set read [open $badwordfile r]
 while  { ![eof $read] } {
  gets $read line
  set helpwanted [string range $line 0 [expr [string first # $line]-1]]
  set message [string range $line [expr [string first # $line]+1] end]
  if { [string match -nocase "* $helpwanted *" $input] == 1 && $helpwanted != "" } {
  if {([info exists BadwordWarn($uhost)] == 1)} {
    putserv "MODE $chan +b $uhost"
    putserv "KICK $chan $nick : $message ($helpwanted) "
    unset BadwordWarn($uhost)
  } else {
    set BadwordWarn($uhost) 1
    timer 5 "unset BadwordWarn($uhost)"
    putserv "KICK $chan $nick : $message ($helpwanted) "
  }
  }
 }
 close $read
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# filtre
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc swear: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,0-9@:/\s\|]} $str "" str
 return $str
}
# bunu kim yaptı bilmiyorum.deniyorum...
proc swear:filter2 {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,0-9*?@:/\s\|\-]} $str "" str
 return $str
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadWord.tcl v$badword_version yüklendi."


house 14 Şubat 2012 15:47

Cevap: badword.tcl -- kanal koruma
 
Gayet başarılı ve işe yarayan bir TCL , kullanıyorum şu an indirdim ve kurdum. Dikkat ettim çevirilerin de başarılı Heartbroken :) Tebrikler.

ulusalchat 23 Mayıs 2012 04:41

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

Heartbroken Nickli Üyeden Alıntı (Mesaj 1041026432)
Selam

sabahın erken saatlerinde paylaştığım badnick koruma scripti gibi buda eski* sunucularımda botların girdiği kanallarda kanal yetkililerin kullanımına ,o kanalın savunmasına yönelik bir script.

Adından anlaşılacağı üzere badword- kötü söz koruması..komutla botun op (@) olduğu kanalda en az halfop (%) ve üzeri kanal yetkililerinin ekleyip-sileceği ve listeleyeceği şekilde yapılmıştır.

kanalda accessi olan voice (+) ve üzeri kimselere bu koruma işlemez-muaf tutar.ayrıca kod içinde muaf tutulacak kelimelerin eklenebildiği bir bölümde mevcuttur.(bunu kendinize göre düzenlemeniz gerekecektir.)

uluslararası yabancı bir sunucudaki resmi yardım kanallarının koruma botlarında kullanılmış ve halen kullanılan bir kod olduğundan orjinali ingilizce idi. Burda paylaşmak için kendimce Türkçe'leştirdim ve kullanımınıza sunuyorum.

komutlar:

!addbadword kelime* sebep -> !addbadword *napyon* napıyon olcaktı tüh bak...

!rembadword kelime* -> !rembadword *napyon*

!listbadword

görüldüğü üzere wildcard kullanabilme imkanı var.kodun en üstünde badwordlerin saklanacağı .txt dosyasının yerini-dizini doğru şekilde belirtiniz.

ÖNEMLİ: kodda satır 210-222 arasında korumadan muaf tutulacak kelimelerin ekleneceği kısım vardır.bu kısmı kendinize göre düzenleyiniz.çoğaltıp -azaltabilirsiniz o satırları..

Örneğin: korumaya [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] yada [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] badword- kötü söz olarak eklemişinizdir.ancak bazı sitelerin yazılmasına tölerans göstermek istiyorsunuzudur .işte o bölümde bunları belirtmelisiniz.

umarım ki işinize yarayacaktır.Güle güle kullanın.

Kod:

set badword_version "1.3"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# KURULUM
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# eklenen kötü sözlerin kayıtedileceği dizini belirtin (sonu slash ile bitmeyecek şekilde)
set badword_cfg(datapath) "/home/broken/ircd/bot/scripts/BadWords"
# set badword_cfg(nameroot) "badwords-"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# KURULUM SONU - bu bölümden sonrasına ne yaptığınızı bilmiyorsanız dokunmamalısınız :)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBADWORD
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
####triggerların olduğu dosyaya yeni bir girdi eklemek için kullanılan prosedür
bind pub - !addbadword badword:pub:add
proc badword:pub:add { nick uhost handle chan arg } {
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 set word [swear:filter2 [string range $arg 0 [expr [string first " " $arg]-1]]]
 set reason [lrange $arg 1 end]
 if { $word == "" || $reason == "" } {
  puthelp "NOTICE $nick :Please provide a badword and a reason."
  return 0
 }
 
 # kontroller tamam.yeni bir girdi ekleyelim.
 global badword_cfg
 set file "$badword_cfg(datapath)/badword[string range $chan 1 end].txt"
 
 set write [open $file a]
 puts $write "$word#$reason"
 close $write
 puthelp "NOTICE $nick : $word kelimesi $chan kanalında kötü söz olarak eklendi."
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBADWORD
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bu prosedür daha önce eklenmiş kelimenin
# kanalında silinmesi içindir.
bind pub - !rembadword badword:pub:rem
proc badword:pub:rem { nick uhost handle chan badword } {
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 # scripti daha okunaklı hale getirir
 global badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # eger badword dosyası yoksa...
 if { ![file exists $badwordfile ] } {
  puthelp "NOTICE $nick : $chan kanalı için bir badword dosyası bulunamadı... Barış :)"
  return 0
 }
 
 set tempfile "$badword_cfg(datapath)/badword[string trimleft $chan #].bak"
 set readfirst [open $badwordfile r]
 set linenumb 0
 set count 0
 puthelp "NOTICE $nick :İşleniyor: Kötü Söz kaldırılıyor."
 while { ![eof $readfirst] } {
  gets $readfirst line
  set helpwanted [string range $line 0 [expr [string first # $line]-1]]
  if { $badword != $helpwanted } {
  if { $linenumb==0 } {
    set writetemp [open $tempfile w]
    puts $writetemp $line
    close $writetemp
    incr linenumb
  } else {
    set writetemp [open $tempfile a]
    puts $writetemp $line
    close $writetemp
    incr linenumb
  }
  } else {
  incr count
  puthelp "NOTICE $nick :($count):!addbadword $helpwanted [string range $line [expr [string first # $line]+1] end]"
  }
 }
 close $readfirst
 set readfirst2 [open $tempfile r]
 set linenumb2 0
 while { ![eof $readfirst2] } {
  gets $readfirst2 line
  if { [string first # $line] != -1 } {
  if { $linenumb2 == 0 } {
    set writetemp [open $badwordfile w]
    puts $writetemp $line
    close $writetemp
    incr linenumb2
  } else {
    set writetemp [open $badwordfile a]
    puts $writetemp $line
    close $writetemp
  }
  }
 }
 
 # bu dosyayı ne diye açtık bir hiç için ??
 # daha güçsüz bırakmak için mi ?
 if { $linenumb2 == 0 } {
  set writetemp [open $badwordfile w]
  close $writetemp
 }
 close $readfirst2
 puthelp "NOTICE $nick :Tamamlandı: Kötü Söz kaldırıldı."
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBADWORDS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Daha önce o kanal için eklenmiş tüm kötü sözler
# için soran yetkiliye listelenmesi prosedürü.
bind pub - !listbadword badword:pub:list
bind pub - !listbadwords badword:pub:list
proc badword:pub:list { nick uhost handle chan badword } {
 
 if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
  return 0
 }
 
 # scripti daha okunaklı yapıyor
 global badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # eğer kötü söz dosyası yoksa...
 if { ![file exists $badwordfile ] } {
  puthelp "NOTICE $nick : $chan kanalı için oluşturulmuş bir Kötü Söz dosyası bulunamadı... Barış :)"
  return 0
 }
 
 set read [open $badwordfile r]
 set text ""
 while { ![eof $read] } {
  gets $read line
  set text "$text [lindex [split $line #] 0]"
 }
 close $read
 
 set finish [string range $text 1 [expr [string length $text]-2]]
 
 if { $finish == "" } {
  puthelp "NOTICE $nick : $chan kanalı için oluşturulmuş herhangi bir Kötü Söz listesi yok :)"
  return 0
 }
 
 # eğer ki eklenmiş kötü sözlerin sayısı çok ise.
 # listelerken satır aralıkları bırakacak yada satır nosu bildirilecek
 set long [split $finish]
 if { [llength $long] > 30 } {
  for { set c 0} { $c < [llength $long] } { incr c 30 } {
  if { $c == 0 } {
    puthelp "NOTICE $nick : $chan: kanalı için Kötü Sözler : 4[lrange $long $c [expr $c+29]]"
  } else {
    puthelp "NOTICE $nick : 4[lrange $long $c [expr $c+29]]"
  }
  }
 } else {
  puthelp "NOTICE $nick : $chan: kanalı için Kötü Sözler 4$finish"
 }
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# BADWORDS kontrol
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# kanal üstündeki yazışmalarda kötü söz kontrolünü
# yapan prosedür
# bind hepsi
bind pubm - "* *" badword:pubm:check
proc badword:pubm:check { nick uhost handle chan arg } {
 
 # yetkililere dokunma
 if { [isop $nick $chan] || [ishalfop $nick $chan] || [isvoice $nick $chan] } {
  return 0
 }
 
 # muaf kelimeleri ayrı tutma.
 if { [string match -nocase "*bir-kelime-girin*" $arg] } {
  return 0
 }
 if { [string match -nocase "*atmasın-bu kelimeleri*" $arg] } {
  return 0
 }
 if { [string match -nocase "*bundan-atmasın*" $arg] } {
  return 0
 }
 if { [string match -nocase "*böyle-çoğaltabilirsiniz*" $arg] } {
  return 0
 }
 
 # scripti daha okunaklı yapalım
 global BadwordWarn badword_cfg
 set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
 
 # kötü söz dosyası yoksa..
 if { ![file exists $badwordfile ] } {
  return 0
 }
 # kelimeleri kötü söz listesinde araştır
 set input " [swear:filter $arg] "
 set read [open $badwordfile r]
 while  { ![eof $read] } {
  gets $read line
  set helpwanted [string range $line 0 [expr [string first # $line]-1]]
  set message [string range $line [expr [string first # $line]+1] end]
  if { [string match -nocase "* $helpwanted *" $input] == 1 && $helpwanted != "" } {
  if {([info exists BadwordWarn($uhost)] == 1)} {
    putserv "MODE $chan +b $uhost"
    putserv "KICK $chan $nick : $message ($helpwanted) "
    unset BadwordWarn($uhost)
  } else {
    set BadwordWarn($uhost) 1
    timer 5 "unset BadwordWarn($uhost)"
    putserv "KICK $chan $nick : $message ($helpwanted) "
  }
  }
 }
 close $read
}
 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# filtre
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc swear: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,0-9@:/\s\|]} $str "" str
 return $str
}
# bunu kim yaptı bilmiyorum.deniyorum...
proc swear:filter2 {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,0-9*?@:/\s\|\-]} $str "" str
 return $str
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadWord.tcl v$badword_version yüklendi."



Sistem güzel calısıyor paylasim icin tesekkürler ancak bir sorun var türkce karakterleri kabul etmiyor kelimenin icinde ç ı ş falan gecin ce almiyor
örnek ananı kelimesini eklemek istediginde anan seklinde kalıyor

saywhat 23 Mayıs 2012 09:55

Cevap: badword.tcl -- kanal koruma
 
wildcard kullanarak ekleme yapabilirsiniz. anan* ..g?t?n* vs vs.. ekleyebilirsiniz.

Türkçe ve diğer utf-8 yazı karakterlerini görmemesi tcl araç komut dilinden kaynaklanan teknik bir sorun [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] .botu kurarken utf-8 patch [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] işlemi uygulayıp kurarsanız yada en son tcllib paketiyle birlikte eggdrop1.8 CVS [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] kurup kullanırsanız bu daha evvel tcl diliyle alakalı teknik kusurlar ortaya çıktıkça ve kullanıcılar sorun bildirdikçe geliştiricilere onlar yeni çıkardıkları versionlarda bu sorunları gidermeye yada örtmeye yönelik yenilikler değişiklikler getiriyorlar o nedenle eski* versionlar yerine ne kadar yeni* tcl paketiyle yeni* eggdrop versi0nlarını beraber kullanırsanız daha az sorun yaşarsanız. özellikle yeni* nesil tcl eggdrop scriptlerinde..

tcl8.6b çıktı [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] bizlerdeki çoğu makinadaysa hala tcl8.4 kurulu oysa ondan sonra 8.5.3 , 8.5.9 , 8.5.11 versionları çıkmıştı.yani tcltk sürekli bir yenilenme gelişme sürecinde sorunlar çıktıkça bildirildikçe bunları gidermek için köklü değişiklikler yapılıyor tcl kütüphanesi dili değişiyor yenileniyor.pek çok tcl komutu yazımı değişiyor gelişiyor eskiden kullanılanların yerine yeni komutlar olmayan komutlar geliyor. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] eggdroplarda yeni versionlarla buna paralel kendini yeni komutlara tcltk ve tcl kütüphanesine kendini uyduruyor [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] yeni komutlar yeni scriptlerle.

ne kadar yeni versionları kullanmaya kurmaya özen gösterirseniz o kadar az sorunla karşılaşırsınız.çünkü yaşanan sorunlar bug olarak bildiriliyor yenilenen versionlarla bunlar giderilip ayıklanıyor.

qusursuz 14 Kasım 2012 22:10

Cevap: badword.tcl -- kanal koruma
 
Tek bişeye takıldım , Bu tcle de kufurleri #admin , #oper vs gibi kanallardan ekletip tum kanallarda atma islemi gerceklesdirmesini sağlaya bilirmiyiz ?

!addbadwords Kelime ( Kanalin ortasında cok hos olmuyo sanki.


Paylaşım içinde tşkler.

Was 26 Kasım 2012 21:55

Cevap: badword.tcl -- kanal koruma
 
Bunun yerine kullanılabilecek bir TCL basit ama güzel gene de;

PHP- Kodu:

set badwords 
"*kelime1*" 
"*kelime2*" 
"kelime3*"
"eklemeye devam et alt alta"

 
bind pubm "*" pubm:badword 
 
proc pubm
:badword {nick uhost hand chan text} { 
 global 
badwords 
  
if {[botisop $chan] && ![isbotnick $nick]} { 
   foreach 
badword $badwords 
    if {[
string match -nocase $badword $text]} { 
      
putquick "MODE $chan +b *!*@[lindex [split $uhost @] 1]" 
      
putquick "KICK $chan $nick :Badword *$badword* yasak kelime tespit edildi." 
      

    } 
  } 



saywhat 27 Kasım 2012 00:17

Cevap: badword.tcl -- kanal koruma
 
kanalda eklemek istemiyormusunuz ? yapacağınız şey şu:
badwordkanalınız.txt oluşturuyorsunuz.mesala diyelimki #maho kanalı için badwordmaho.txt adında not defteri gibi bir txt editörüyle açtığınız dosyaya yasaklamak istediğiniz kötü sözleri şu şekilde alt alta ekliyorsunuz:
kötüsöz#sebep

şeklinde kötü sözleri eklerken wildcard * , ? kullanabilirsiniz. örnek:

h?yar*#o snn bubandır...
salatal?k#yanınada domates doğrarız.
...
vs vs hangi kanal için badword kötüsöz listesi oluşturmak isteniyorsa kanal üstünde ekleme yapmak rahatsız ediyorsa bu şekilde txt dosyaları oluşturup botunuzun scripts/badword/ klasörü içine"
Kod:

set badwordfile "$badword_cfg(datapath)/badword[string trimleft $chan #].txt"
kod içinde burda belirtilmiş kötü sözler için oluşturulacak eklenecek txt dosyalarının yeri.görüldüğü gibi her kanal için ayrı badword.txt aranıp ekleniyor yoksa oluşturuluyor.elle manuel olarak girilebilir.botun görmesi için .rehash yada .restart uygulayın.

[bu kod yabancı bir sunucuda kullanılıyordu uzun yıllardır.yabancı sunucularda kanal içi işlere karışılmaz.o kanalın yetkilileri sorumludur.sadece bizde görülebilecek bir şey bu operların adminlerin kanal içi işlere karışması.o yüzden tek kanal üstünden operların tüm kanallar için kötüsöz eklemesi düşüncesi bana ters geliyor.illa bu şekilde düzenlemek isteyen düzenlesin.bu tarz bir editleme işine ben girmem.illa operlar eklemek istiyorsa bu kodu kullanmasınlar...bu kodun amacı bu değil.kanal koruma için yapılmış sunucu koruma için değil.illa eklenmek isteniyorsa adwords yada spamfilter kullanın madem.)


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

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