adwords'ü bilemem de, yukarıda verdiğim kod aslında işlev olarak bir badword/spam/küfür koruması. ufak bir düzenlemeyle botun olduğu tüm kanallar üzerindeki ,tüm kanal içi yazışmaları kollayan-tarayan ve buna göre işlem yapan bir kod yani birnevi adwords'ün yaptığı işi yapar hale gelir. (tabi bot'un olduğu tüm kanallar ile sınırlı olacaktır.)
kodun içine gerekli açıklamaları yazdım . bunlara göre kodu kendi tercihlerinize/beklentinize göre düzenleyip kullanabilirsiniz.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
bind pubm - "% *" spam:words ;# botun olduğu tüm kanallardaki mesajlarda ilgili proc işletir.
proc spam:words {nick uhost hand chan text} {
# if {[matchattr [nick2hand $nick] mnoaf|mnoaf $chan] \ ;# işlemden muaf tutulacak olanlar bu satırda m=bot-master,n=bot sahibi,o=op alan,a=oto-op edilen ve f=dostlar
# || [isop $nick $chan] || [ishalfop $nick $chan] \ ;# kanaldaki oplar ve halfoplar
# || [isvoice $nick $chan] || $::botnick eq $nick} { return 0 } ;# kanaldaki voicelar ve botun yazdıklarına tepki vermesin*
set dosya "spam.txt" ;# yasak kelimelerin girileceği dosya adı
set nick [filter $nick] ;# nickteki varsa özel karakterleri filtre ederek görmesi için
set text [filter [stripcodes bcruag $text]] ;# yakalanacak kanal mesajlarındaki renk kodlarını ve özel Tcl karakterlerini ayıklayıp botun görmesi/işlemesi için
set t [join [lrange [split $text] 0 end]] ;# kişinin yazdığı/gönderdiği satırın tamamı dikkate alınır.
#set host [lindex [split [getchanhost $nick $chan] "@"] 1] ;# nickin hostunu alır.hosta işlem yapılacaksa satırı etkin kılın
#set ident [lindex [split [getchanhost $nick $chan] "@"] 0] ;# nickin ident kısmına işlem yaptıralacaksa satırı etkin kılın.
regsub -all -- {[A-Z\+\%\`\=\&\#\+\-\_\!\~\<\,\@\#\$\%\^\&\*]} $t "A+%`=&#+-_!~<,@#$%^&*" t ;# yasak söz/lerin farklı karakterler arasında gizlenmeye çalışılmasına karşı..
set i 0
set fp [open $dosya r]
while {[gets $fp b] >= 0} { ;# dosya açılıp son satıra dek okunur.
if {[string match -nocase "*$b*" $t]} { ;# dosyadaki sözlerle eşleşme olup olmadığı kontrol edilir.
#putkick $chan $nick :selametle... ;# yasak keli/meleri kullanan kanaldan kicklensin deniyorsa etkin kılın
#pushmode $chan +b $nick ;# nicke ban isteniyorsa etkin kılın
#pushmode $chan +b *!$ident@* ;# kişinin ident kısmına ban için etkin kılın
#pushmode $chan +b *!*@$host ;# kişinin host kısmına ban için etkin kılın
#flushmode $chan ;# banlardan biri etkin kılınacaksa bunu etkinleştirmeniz halinde mod hemen işleme konur.daha hızlı tepki vermesini sağlar.
putquick "shun $nick 5m :det!!!"
putquick "sajoin $nick 0"
putquick "sajoin $nick #uyarı"
incr i
}
close $fp
}
return 0
}
# Tcl özel karakterlerini filtre etmekte kullanılacak prosedür.
proc filter {text} {
set text [string map {"\\" "\\\\" "\[" "\\\[" "\]" "\\\]" "\{" "\\\{" "\}" "\\\}" "\$" "\\\$" "\"" "\\\""} $text]
return [subst $text]
}