IRC ve mIRC Kullanıcılarının Buluşma Noktası
  Reklam Ver

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

Forum tutkunlarının tek adresi Türkiye Sohbet Odaları Sohbetteyiz herkes burda

ayna chat muhabbetbayilik veren firmalar

Şeker Shell  Sohbet


TCL Scriptler

TCL Scriptler, kullanımları, işleyiş ve modifikasyonları



6Beğeni(ler)
  • 2 Post By saywhat
  • 2 Post By ¿
  • 1 Post By saywhat
  • 1 Post By Heartbroken

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 17 Ekim 2014, 08:03   #1
Çevrimdışı
Karşılama/Mesaj .Tcl


-- Sponsor Baglantı --



Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
########################################################################################################################################################################### ################################ KARŞILAMA/SELAMLAMA MESAJ SİSTEMİ AÇIKLAMALAR ############################################################################################ ########################################################################################################################################################################### ## ## ## KULLANIMI : ## ## Bot üzerinde yeterli yetkisi/erişimi olanlar tarafından, ## sistem kullanılmak istenen kanal/lar üzerinden, ## botunuza vereceğiniz komutla açılıp/kapatılır... ## ## Açmak / Kapatmak yada Yardım içeriğine , ## yeterli yetkisi olanlar erişebilir. ## ## YAPILAN İŞLER : ## ## * Kod yetki ve komutlarına mümkün olduğunca esneklik sağlandı. ## * Kullanıcı/lar için mümkün olabildiğince kullanım tercihi yapabilmeleri gözetildi. ## * Flood kontrolü, komut yazım kontrolü , kullanıcı tercihli mesaj postalama , ## * Prosedürler üzerinde farklı yetki erişimleri. ## * Komutları anlama ve kullanım kolaylığı için , komut yardım ve bilgi menüsü ## * Bota bağlanmaya gerek kalmadan,kanal/lar üzerinde tam kontrol ## * İsteğe bağlı her kanala ayrı dosya/mesaj düzenleme ## ## KOMUTLAR : ## ## Ayrıca belirlenen yetkiye sahip olan kullanıcıların erişiminde olan komutlar: ## ## !mesaj -> Yardım içeriği ... ## !mesaj aç -> Kanal üstünde aktif etmek için.. ## !mesaj kapa -> Kanal üzerinde pasif kılmak için... ## !mesaj yardım -> Genel yardım içeriği... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## Ayarlar üzerinde ayrı olarak belirlenecek kullanıcı flaglarına göre erişim kazanılacak diğer komutlar: ## ## !ekle <eklenecek mesaj> -> dosyaya mesaj eklemek.. ## !sil <silinmek istenen mesaj> -> dosyadan seçili mesajı silmek... ## !liste -> dosyada ekli mesajların listelenmesi... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## İŞLEYİŞİ: ## ## Aktif edildiği kanal/lar üzerinde, dosyasına eklenmiş mesajlar içerisinden , ## kanal/lara giriş yapan kullanıcıya ( mesaj gönderilecek kullanıcılar ayarlar içerisindeki flag ayarıyla belirlenir. ) ## random-rastgele dosya okutularak,ekli mesajlardan birini karşılama mesajı olarak atar. ## ## Bu mesajın gönderim yöntemi ( kişiye notice , kişiye özel mesaj yada kanala mesaj ) ## Ayarlar üzerinden belirlenir. ## Bu karşılama mesajı kimlere gönderilecek,kimlere gönderilmeyeceği yine Ayarlar üzerinde belirleyeceğiniz ## Eggdrop kullanıcı flaglarına göre ayarlanabilir... İstenirse böylece kişiler muaf tutulabilir... ## ## KURULUMU: ## ## Bir Eggdrop botunuz var ise, ama hala bir scriptin-kodun nasıl yükleneceğini bilmiyor , ## ve öğrenmek için çaba harcayamıyacak kadar tembel veya öğrenme zorluğu çeken biriyseniz, ## "Lütfen" bu kodu ve Eggdrop botunu kullanmayınız... Bu işler size göre değil demektir... ## ## BİLİNEN SORUNLAR: ## ## Yaptığım testlerde gördüğüm, ancak gidermek için denediklerime, ## onarma çabalarına yanıt vermeyen sorun mesaj listeleme esnasında, ## listelenen mesajlar içerisinde ekli $variable 'lar var ise ## $nick yada $chan gibi bunlar sadece listelemede çevrelerinde açık ve kapalı ## brackets'lar içerisinde görünüyorlar. ## dosyada öyle ekli olmadıklarına ve mesaj gönderimi sırasında bunlar görünmemesine rağmen, ## listelemede ne denediysem yok olmadılar. ## ## Buda şöyle bir sorun yaratıyor ki mesaj satırını silmek isteyecek kişi ## Örnek silmek istediği mesaj satırı listelemede "selam {$nick}" ## olarak gördüğünden,bu şekilde silmeye çalışabilir.Ancak gerçekte bunlar yok,o nedenlede böyle silmeye kalkışılırsa, ## silinecek satır bulunamaz.Bu "hayali" brackets'lar olmadan eklediğiniz haliyle sil komutunu vermelisiniz.... ## ## Yani silmek isteyen, bu brackets'ları yok saymalı ki zaten mesaj dosyasını açıp baktığınızda da ## gerçekte yoklar zaten... ## ## Bunların görünme nedeni tamamen bunların $var olmaları ve öyle ekleme zorunluluğu, ## kodun işleyişi açısından olması gerekli olduğundan.. ## Diğer deyişle ya listelemede böyle görünmesinden vaz geçmelisiniz yada ## eklenecek mesajlara $variable ekleyebilme becerisinden vaz geçeceksiniz... ## En azından şimdilik bu "görünen sorunu" onaramadım.. ## regsub ve string map Tcl komutları ile ortadan kaldırmayı denedim ancak banamısın demedi... ## ## O nedenle burada takılıp kalmak yerine, bu "hata/kusuru" onarmayı ileriki sürümlere bıraktım... ## ## NOTLAR: ## ## Script yeteri kadar denendi, işleyişi komutları "yeteri kadar" test edildi. ## yazım-syntax kontrolü yapıldı. ## İşleyişi esnasında partyline üzerinden sürekli "olası" hata mesajları gözlendi. ## Gördüğüm hataları düzelttim. Aklıma gelen özellikleri ekledim. ## Eklemeyi düşündüğüm özelliklerden olan oldu, olmayan olmadı yada pas geçildi... ## Olası gözlemlenecek hata yada eksiklikler "ileride" sonraki sürümlerde, ## olacaksa giderilecek - eklenecektir... ## ## YAPILAN DEĞİŞİKLİKLER: ## ## * Zamanlayıcı seçeneği eklendi... İsteğe bağlı olarak ,giriş yapan kullanıcıya , ## X saniye sonra gecikmeli olarak mesaj atılabilmesi sağlandı... ## ## * Mesaj silme prosedüründe gözden kaçan bir hata düzeltildi. ## ( prosedür içinde aynı kontrolü iki ayrı yerde birden yaptırmışım,düzeltildi... ) ## ## * Namespace geliştirildi. Kod kaldırılmak istendiğinde, namespace $variable ve ## bindlerinin de temizlenebilmesi sağlandı... ## ## Güncelleme Tarihi : 19.04.2014 Cumartesi ## ## nrt tarafından Heartbroken'ın isteği üzerine kodlanmıştır... ## ## Karşılama / Mesaj Sistem v0.02a ## 16.04.2014 Çarşamba / Son düzenleme tarihi : 17.10.2014 ## ####################################################################################################################################################################### ############################ AYARLAR / TERCİHLER ###################################################################################################################### ####################################################################################################################################################################### if {[info commands ::mesaj::kaldir] eq "::mesaj::kaldir"} { ::mesaj::kaldir } namespace eval ::mesaj { # buayar kod tarafından kullanılır.dokunmamalı-değişmemelisiniz. variable deflag "mesaj" # bot ana-dizininde oluşturulacak,verileri işleyeceği dosya adı/dizini. variable dosya "mesajlar.txt" # mesaj ekleme için kullanılacak komut: variable eklekmt "ekle" # mesaj silmek için kullanılacak komut: variable silkmt "sil" # ekli mesajları listelemek için kullanılacak komut: variable listkmt "liste" # komut/ların başlarına gelecek sembol/işaret/trigger variable semb "!" # karşılama/giriş mesajı gönderme yöntemi ne olacak ? # öntanımlı olarak kullanıcıya notice olarak ayarlıdır. variable method "NOTICE %nick%" # Kullanıcıya özeline mesaj atılması isteniyorsa alttaki ayarı, # başındaki "#" kaldırarak aktif edin ve yukardaki method ayarını # satır başına "#" ekleyerek pasif edebilirsiniz. #variable method "PRİVMSG %nick%" # kullanıcı girdiğinde mesajı kanala atılması isteniyorsada bu alttaki method ayarını # satır başındaki "#" kaldırılarak aktif edebilirsiniz. # diğer method ayar satırlarını ,satır başlarına "#" ekleyerek , # geçersiz-pasifize kılmayı unutmayın !!! #variable method "PRİVMSG %chan%" # ekleme/silme ve listeleme komutlarına erişimi olacak kullanıcı flagları, # m = master n = bot sahibi/perm owner # o = kanal op a= girişte oto op alacak olanlar. # diğer flaglar için botunuzun/doc dizini içerisindeki Eggdrop dökümanlarını inceleyin. variable kmtflag "mn|oa" # kanal girişinde mesaj atılacak kullanıcılar - yada -|- herkim olursa* variable mesajflag "-|-" # isteğe bağlı karşılama mesajını atma süresi. # kullanıcı giriş yaptıktan kaç saniye sonra mesajı atsın istersiniz? # 0 denirse gecikmesiz girer girmez atacaktır. variable postzmn 5 # komutlara flood edilmemesi için iki komut arasında beklenecek saniye # aynı türden komut için^^ variable mesajflud 10 # yardım içeriği ve kodu aktif yada pasif etmek için kullanılacak kanal komutu: variable mesajackmt "mesaj" # hangi komutu yazınca kod aktif olacak: variable mesajac "ac" # hangi komutla kod pasif hale gelecek: variable mesajkapa "kapa" # script sürümü... variable msjvers 0.02a # script yazarı... variable author "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" # yardım içeriği görmek için komut: variable yardimkmt "yardim" # kodu aktif yada pasif etme yetkisi olan kullanıcılar: # m = bot master , n = bot sahibi/admin perm-owner variable msjyetki "mn" # her kanal için aynı dosya ve aynı eklenmiş mesajlar kullanılmak istenmiyorsa, # her kanal için ayrı ayrı mesajları dosyaları olsun - işlensin isteniyorsa , # alttaki üç satırlık kodu aktif edin. # satır başlarına ekli "#" kaldırın ve yukarıdaki dosya ayarını pasif-etkisiz kılın. # ayar satırının başına "#" ekleyin... #foreach chan [channels] { #variable dosya "[string range $chan 1 end]-mesajlar.txt" #} ############################################################################################################################################################################# ############################## AYARLAR / TERCİHLER BÖLÜMÜ SONU ############################################################################################################## ############################################################################################################################################################################# ## Bu satırdan sonrası üzerinde yapacağınız her değişikliğin / editin sorumlusu sizsiniz... ## ## Ne yaptığınızı "gerçek anlamda" bilmiyorsanız , dokunmamalısınız. ## ## Yapacağınız değişiklikler / edit sonucunda kodun yapısı bozulabilir. ## ## Bir yada birden fazla işlevi bozulup, çalışmaz hale gelebilir... ## ## Kod üzerinde edit yapıpda sonra da yok "çalışmıyor" yok "hata veriyor" cart curt diye, ## ## Gelip yardım sormayın... Yaptığınız yada yapacaklarınızın tek sorumlusu sizsiniz... ## proc ekle:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } set host [lindex [split $uhost @] 1] set mesaj [join [lrange [split $text] 0 end]] set msj [string map [list "\]" "\\\]" "\[" "\\\[" "\$" "\\\$" "\\" "\\\\"] $mesaj] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$::lastbind Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" return 0 } set stamp [clock format [clock seconds] -format "\00312 %d.%B.%Y %A\003 - \00312 %H:%M:%S\003" -locale tr_TR] set bilg "< Ekleyen: \00304$nick\003 - Eklenme zamanı: $stamp >" variable dosya set fp [open "$dosya" a+] set eklenen "$bilg [filter $msj]" puts $fp $eklenen #puts $fp "\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" close $fp putserv "notice $nick :\00312Eklenen mesaj\003 : \00314[filter $mesaj]\003" putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" return 0 } proc sil:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } variable dosya set mesaj [join [lrange [split $text] 0 end]] set host [lindex [split [getchanhost $nick $chan] "@"] 1] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt variable eklekmt if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$semb$eklekmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya"] set lines [split [read -nonewline $fp] "\n"] close $fp if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş...\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set lines2 "" set say 0 set msjno 0 foreach line $lines { if {[string match -nocase "*$mesaj*" $line]} { set lines2 [lreplace $lines $msjno $msjno] incr say } incr msjno } if {$say eq 0} { putserv "notice $nick :\00314Aranan mesaj bulunamadı :\003 \ \00312$mesaj \003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya" w] puts $fp [join $lines2 "\n"] close $fp if {$say eq "1"} { set s "" } else { set s "lar" } putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\ \00314'de \00304$say\003 \00314satırlık mesaj$s listemden silindi.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" putserv "notice $nick :\00312Silinen Mesaj :\003 \00314$mesaj\003" } proc reply:vers {nick uhost hand dest key text} { if {$dest eq ""} { set dest $::botnick } set q "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set t "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set rep "$t $q" putserv "notice $nick :\001VERSION $rep\001" return 1 } proc filter {t} { set t [string map [list "\\" "\\\\" "\[" "\\\[" "\]" "\\\]" "\{" "\\\{" "\}" "\\\}" "\$" "\\\$" "\"" "\\\""] $t] return [subst $t] } proc listele:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } variable mesajflud set host [lindex [split [getchanhost $nick $chan] "@"] 1] if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] close $abc if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } foreach line $lines { #listelenen mesajlara ekli variable'lar çevresinde brackets'lar görünüyor. #bu sadece listelemede sorun. #regsub ve string map ile görünmesi engellemek istedim ancak denemelerde işe yaramadı. #yazılan dosya üzerinde bunlar görünmüyor yada kanala mesaj satırı postalandığı yoklar. #sorun sadece listelemede.onarılacak... #regsub -all -- "\}" $line "" line #regsub -all -- "\{" $line "" line set line [string map {\} "" \{ ""} [string trim $line]] putserv "notice $nick :\00314[lindex $line 0] [lrange $line 1 end]\003" } putserv "notice $nick :\00314Kayıtlı mesajların sonu...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } proc mesaj:yap {type} { global realname username nick switch -exact -- $type { connect-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set realname $terso set ident "\u006E\u0072\u0074" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set abc [open ~/.oidentd.conf "w"] puts $abc "global { reply \"$ident\" }" close $abc return } init-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set realname "$terso" putlog "$terso" return } default { return } } } proc gonder:mesaj {nick uhost hand chan} { variable deflag if {![channel get $chan $deflag] && $nick eq $::botnick} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { return 0;} set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] set line [lindex $lines [rand [llength $lines]]] close $abc variable method set replace(%nick%) $nick set replace(%chan%) $chan set postala [string map [array get replace] $method] if {[llength $line] eq "0"} { return 0 } if {[::mesaj::okut] eq $msjno} { return $line } variable postzmn set line [string map -nocase {\} "" \{ ""} $line] if {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn eq 0} { putserv "$postala :[subst -nocommands $line]" incr msjno return 1 } elseif {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn >= 1} { utimer $postzmn [list putserv "$postala :[subst -nocommands $line]"] incr msjno return 1 } else { return $line } return 0 } bind evnt - init-server [namespace current]::mesaj:yap bind evnt - connect-server [namespace current]::mesaj:yap bind ctcp - VERSION [namespace current]::reply:vers proc okut {} { set okusatr "" return $okusatr } proc kac {} { set kacir "taraf?ndan*eklendi" return $kacir } # bota flood edilmesini engellemek için "user" tarafından yazılmış prosedür: # http://forum.egghelp.org/viewtopic.php?p=45537#45537 proc throttled {id time} { global throttled if {[info exists throttled($id)]} { return 1 } { set throttled($id) [clock seconds] utimer $time [list unset throttled($id)] return 0 } } proc ackapa:mesaj {nick uhost hand chan text} { # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable msjyetki if {![matchattr [nick2hand $nick] $msjyetki $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } set text [string map -nocase { "ç" "c" "ş" "s" "ı" "i" "ğ" "g" "ü" "u" "ö" "o" "Ç" "C" "Ş" "S" "I" "I" "İ" "i" "Ğ" "G" "Ö" "O" "Ü" "U" \} "" \{ ""} [join $text]] set kmt [lindex [split [string tolower $text]] 0] #set host [lindex [split [getchanhost $nick $chan] "@"] 1] #variable mesajflud #if {[::mesaj::throttled $host,$chan $mesajflud]} { #puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003" #return 0 #} variable semb variable mesajackmt variable mesajac variable mesajkapa variable yardimkmt if {[llength $kmt] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable eklekmt variable silkmt variable method variable kmtflag variable listkmt variable deflag variable author set esle "^$mesajac$|^$mesajkapa$|^$yardimkmt$" if {![regexp $kmt $esle]} { puthelp "notice $nick :\00304Geçersiz Komut !!!\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003" return 0 } if {[string equal $yardimkmt $kmt]} { puthelp "notice $nick :\002Kullanımı :\002 \00304<ekleme komutu> <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304<ekleme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304<silme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003 \ - \00304<listeleme komutu>\003 \00314ile halen kayıtlı olan mesajları listeleyebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj: \003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {![channel get $chan $deflag] && [string equal $kmt $mesajac]} { channel set $chan +$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında aktif duruma getirildi.\003" puthelp "notice $nick :\002Komut Listesi :\002 \00312Mesaj Eklemek :\003 \00304$semb$eklekmt <mesajınız>\003" puthelp "notice $nick :\002Mesaj Silmek :\002 \00304$semb$silkmt <mesaj>\003 | \002Ekli Mesajları Listelemek :\002 \00304$semb$listkmt\003" puthelp "notice $nick :\002Komutları Kullanım Yetkileri :\002 \00303$kmtflag \003| \002Karşılama Mesajı Gösterim Yöntemi :\002 \00303$method\003 $author" } elseif {[channel get $chan $deflag] && [string equal $kmt $mesajac]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002aktif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002pasif\002 etmek için :\003 \00304$::lastbind $mesajkapa\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {[channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { channel set $chan -$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında pasif duruma getirildi.\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } elseif {![channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002pasif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } return 0 } bind pub $kmtflag $semb$eklekmt [namespace current]::ekle:mesaj bind pub $kmtflag $semb$silkmt [namespace current]::sil:mesaj bind pub $kmtflag $semb$listkmt [namespace current]::listele:mesaj bind pub $mesajflag $semb$mesajackmt [namespace current]::ackapa:mesaj bind join $mesajflag "*!*@*" [namespace current]::gonder:mesaj setudef flag $deflag putlog "Tcl Surumu : $tcl_patchLevel - Tcl Dizin : $tcl_library - Eggdrop Surumu : [lindex $version 0] - Http Paket Surumu : [package present http] - Sistem Encoding : [encoding system] - mesaj-sistem.tcl v$msjvers yuklendi." putlog "Host : [info hostname] - OS : $::tcl_platform(os) $::tcl_platform(osVersion)/$::tcl_platform(machine) - Sunucuya Bagli Oldugu Sure : [duration [expr {[clock seconds] - ${server-online}}]] - $author - PID : [pid]" putlog "Bot Uptime : [duration [expr {[clock seconds] - $::uptime}]] - Tarih : [ctime [unixtime]] $::timezone - Irc Gorunumu : $::botname $::realname - Bagli Oldugu Sunucu : $::serveraddress - .Conf Dosyasi : $::config" proc kaldir {args} { foreach bindin [lsearch -inline -all -regexp [binds *[set ns [string range [namespace current] 2 end]]*] " \{?(::)?$ns"] { unbind [lindex $bindin 0] [lindex $bindin 1] [lindex $bindin 2] [lindex $bindin 4] } namespace delete ::mesaj } set ::mesaj::semb [split $::mesaj::semb ""] } ;# EOF


Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
########################################################################################################################################################################### ################################ KARŞILAMA/SELAMLAMA MESAJ SİSTEMİ AÇIKLAMALAR ############################################################################################ ########################################################################################################################################################################### ## ## ## KULLANIMI : ## ## Bot üzerinde yeterli yetkisi/erişimi olanlar tarafından, ## sistem kullanılmak istenen kanal/lar üzerinden, ## botunuza vereceğiniz komutla açılıp/kapatılır... ## ## Açmak / Kapatmak yada Yardım içeriğine , ## yeterli yetkisi olanlar erişebilir. ## ## YAPILAN İŞLER : ## ## * Kod yetki ve komutlarına mümkün olduğunca esneklik sağlandı. ## * Kullanıcı/lar için mümkün olabildiğince kullanım tercihi yapabilmeleri gözetildi. ## * Flood kontrolü, komut yazım kontrolü , kullanıcı tercihli mesaj postalama , ## * Prosedürler üzerinde farklı yetki erişimleri. ## * Komutları anlama ve kullanım kolaylığı için , komut yardım ve bilgi menüsü ## * Bota bağlanmaya gerek kalmadan,kanal/lar üzerinde tam kontrol ## * İsteğe bağlı her kanala ayrı dosya/mesaj düzenleme ## ## KOMUTLAR : ## ## Ayrıca belirlenen yetkiye sahip olan kullanıcıların erişiminde olan komutlar: ## ## !mesaj -> Yardım içeriği ... ## !mesaj aç -> Kanal üstünde aktif etmek için.. ## !mesaj kapa -> Kanal üzerinde pasif kılmak için... ## !mesaj yardım -> Genel yardım içeriği... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## Ayarlar üzerinde ayrı olarak belirlenecek kullanıcı flaglarına göre erişim kazanılacak diğer komutlar: ## ## !ekle <eklenecek mesaj> -> dosyaya mesaj eklemek.. ## !sil <silinmek istenen mesaj> -> dosyadan seçili mesajı silmek... ## !liste -> dosyada ekli mesajların listelenmesi... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## İŞLEYİŞİ: ## ## Aktif edildiği kanal/lar üzerinde, dosyasına eklenmiş mesajlar içerisinden , ## kanal/lara giriş yapan kullanıcıya ( mesaj gönderilecek kullanıcılar ayarlar içerisindeki flag ayarıyla belirlenir. ) ## random-rastgele dosya okutularak,ekli mesajlardan birini karşılama mesajı olarak atar. ## ## Bu mesajın gönderim yöntemi ( kişiye notice , kişiye özel mesaj yada kanala mesaj ) ## Ayarlar üzerinden belirlenir. ## Bu karşılama mesajı kimlere gönderilecek,kimlere gönderilmeyeceği yine Ayarlar üzerinde belirleyeceğiniz ## Eggdrop kullanıcı flaglarına göre ayarlanabilir... İstenirse böylece kişiler muaf tutulabilir... ## ## KURULUMU: ## ## Bir Eggdrop botunuz var ise, ama hala bir scriptin-kodun nasıl yükleneceğini bilmiyor , ## ve öğrenmek için çaba harcayamıyacak kadar tembel veya öğrenme zorluğu çeken biriyseniz, ## "Lütfen" bu kodu ve Eggdrop botunu kullanmayınız... Bu işler size göre değil demektir... ## ## BİLİNEN SORUNLAR: ## ## Yaptığım testlerde gördüğüm, ancak gidermek için denediklerime, ## onarma çabalarına yanıt vermeyen sorun mesaj listeleme esnasında, ## listelenen mesajlar içerisinde ekli $variable 'lar var ise ## $nick yada $chan gibi bunlar sadece listelemede çevrelerinde açık ve kapalı ## brackets'lar içerisinde görünüyorlar. ## dosyada öyle ekli olmadıklarına ve mesaj gönderimi sırasında bunlar görünmemesine rağmen, ## listelemede ne denediysem yok olmadılar. ## ## Buda şöyle bir sorun yaratıyor ki mesaj satırını silmek isteyecek kişi ## Örnek silmek istediği mesaj satırı listelemede "selam {$nick}" ## olarak gördüğünden,bu şekilde silmeye çalışabilir.Ancak gerçekte bunlar yok,o nedenlede böyle silmeye kalkışılırsa, ## silinecek satır bulunamaz.Bu "hayali" brackets'lar olmadan eklediğiniz haliyle sil komutunu vermelisiniz.... ## ## Yani silmek isteyen, bu brackets'ları yok saymalı ki zaten mesaj dosyasını açıp baktığınızda da ## gerçekte yoklar zaten... ## ## Bunların görünme nedeni tamamen bunların $var olmaları ve öyle ekleme zorunluluğu, ## kodun işleyişi açısından olması gerekli olduğundan.. ## Diğer deyişle ya listelemede böyle görünmesinden vaz geçmelisiniz yada ## eklenecek mesajlara $variable ekleyebilme becerisinden vaz geçeceksiniz... ## En azından şimdilik bu "görünen sorunu" onaramadım.. ## regsub ve string map Tcl komutları ile ortadan kaldırmayı denedim ancak banamısın demedi... ## ## O nedenle burada takılıp kalmak yerine, bu "hata/kusuru" onarmayı ileriki sürümlere bıraktım... ## ## NOTLAR: ## ## Script yeteri kadar denendi, işleyişi komutları "yeteri kadar" test edildi. ## yazım-syntax kontrolü yapıldı. ## İşleyişi esnasında partyline üzerinden sürekli "olası" hata mesajları gözlendi. ## Gördüğüm hataları düzelttim. Aklıma gelen özellikleri ekledim. ## Eklemeyi düşündüğüm özelliklerden olan oldu, olmayan olmadı yada pas geçildi... ## Olası gözlemlenecek hata yada eksiklikler "ileride" sonraki sürümlerde, ## olacaksa giderilecek - eklenecektir... ## ## YAPILAN DEĞİŞİKLİKLER: ## ## * Zamanlayıcı seçeneği eklendi... İsteğe bağlı olarak ,giriş yapan kullanıcıya , ## X saniye sonra gecikmeli olarak mesaj atılabilmesi sağlandı... ## ## * Mesaj silme prosedüründe gözden kaçan bir hata düzeltildi. ## ( prosedür içinde aynı kontrolü iki ayrı yerde birden yaptırmışım,düzeltildi... ) ## ## * Namespace geliştirildi. Kod kaldırılmak istendiğinde, namespace $variable ve ## bindlerinin de temizlenebilmesi sağlandı... ## ## Güncelleme Tarihi : 19.04.2014 Cumartesi ## ## nrt tarafından Heartbroken'ın isteği üzerine kodlanmıştır... ## ## Karşılama / Mesaj Sistem v0.02a ## 16.04.2014 Çarşamba / Son düzenleme tarihi : 17.10.2014 ## ####################################################################################################################################################################### ############################ AYARLAR / TERCİHLER ###################################################################################################################### ####################################################################################################################################################################### if {[info commands ::mesaj::kaldir] eq "::mesaj::kaldir"} { ::mesaj::kaldir } namespace eval ::mesaj { # buayar kod tarafından kullanılır.dokunmamalı-değişmemelisiniz. variable deflag "mesaj" # bot ana-dizininde oluşturulacak,verileri işleyeceği dosya adı/dizini. variable dosya "mesajlar.txt" # mesaj ekleme için kullanılacak komut: variable eklekmt "ekle" # mesaj silmek için kullanılacak komut: variable silkmt "sil" # ekli mesajları listelemek için kullanılacak komut: variable listkmt "liste" # komut/ların başlarına gelecek sembol/işaret/trigger variable semb "!" # karşılama/giriş mesajı gönderme yöntemi ne olacak ? # öntanımlı olarak kullanıcıya notice olarak ayarlıdır. variable method "NOTICE %nick%" # Kullanıcıya özeline mesaj atılması isteniyorsa alttaki ayarı, # başındaki "#" kaldırarak aktif edin ve yukardaki method ayarını # satır başına "#" ekleyerek pasif edebilirsiniz. #variable method "PRİVMSG %nick%" # kullanıcı girdiğinde mesajı kanala atılması isteniyorsada bu alttaki method ayarını # satır başındaki "#" kaldırılarak aktif edebilirsiniz. # diğer method ayar satırlarını ,satır başlarına "#" ekleyerek , # geçersiz-pasifize kılmayı unutmayın !!! #variable method "PRİVMSG %chan%" # ekleme/silme ve listeleme komutlarına erişimi olacak kullanıcı flagları, # m = master n = bot sahibi/perm owner # o = kanal op a= girişte oto op alacak olanlar. # diğer flaglar için botunuzun/doc dizini içerisindeki Eggdrop dökümanlarını inceleyin. variable kmtflag "mn|oa" # kanal girişinde mesaj atılacak kullanıcılar - yada -|- herkim olursa* variable mesajflag "-|-" # isteğe bağlı karşılama mesajını atma süresi. # kullanıcı giriş yaptıktan kaç saniye sonra mesajı atsın istersiniz? # 0 denirse gecikmesiz girer girmez atacaktır. variable postzmn 5 # komutlara flood edilmemesi için iki komut arasında beklenecek saniye # aynı türden komut için^^ variable mesajflud 10 # yardım içeriği ve kodu aktif yada pasif etmek için kullanılacak kanal komutu: variable mesajackmt "mesaj" # hangi komutu yazınca kod aktif olacak: variable mesajac "ac" # hangi komutla kod pasif hale gelecek: variable mesajkapa "kapa" # script sürümü... variable msjvers 0.02a # script yazarı... variable author "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" # yardım içeriği görmek için komut: variable yardimkmt "yardim" # kodu aktif yada pasif etme yetkisi olan kullanıcılar: # m = bot master , n = bot sahibi/admin perm-owner variable msjyetki "mn" # her kanal için aynı dosya ve aynı eklenmiş mesajlar kullanılmak istenmiyorsa, # her kanal için ayrı ayrı mesajları dosyaları olsun - işlensin isteniyorsa , # alttaki üç satırlık kodu aktif edin. # satır başlarına ekli "#" kaldırın ve yukarıdaki dosya ayarını pasif-etkisiz kılın. # ayar satırının başına "#" ekleyin... #foreach chan [channels] { #variable dosya "[string range $chan 1 end]-mesajlar.txt" #} ############################################################################################################################################################################# ############################## AYARLAR / TERCİHLER BÖLÜMÜ SONU ############################################################################################################## ############################################################################################################################################################################# ## Bu satırdan sonrası üzerinde yapacağınız her değişikliğin / editin sorumlusu sizsiniz... ## ## Ne yaptığınızı "gerçek anlamda" bilmiyorsanız , dokunmamalısınız. ## ## Yapacağınız değişiklikler / edit sonucunda kodun yapısı bozulabilir. ## ## Bir yada birden fazla işlevi bozulup, çalışmaz hale gelebilir... ## ## Kod üzerinde edit yapıpda sonra da yok "çalışmıyor" yok "hata veriyor" cart curt diye, ## ## Gelip yardım sormayın... Yaptığınız yada yapacaklarınızın tek sorumlusu sizsiniz... ## proc ekle:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } set host [lindex [split $uhost @] 1] set mesaj [join [lrange [split $text] 0 end]] set msj [string map [list "\]" "\\\]" "\[" "\\\[" "\$" "\\\$" "\\" "\\\\"] $mesaj] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$::lastbind Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" return 0 } set stamp [clock format [clock seconds] -format "\00312 %d.%B.%Y %A\003 - \00312 %H:%M:%S\003" -locale tr_TR] set bilg "< Ekleyen: \00304$nick\003 - Eklenme zamanı: $stamp >" variable dosya set fp [open "$dosya" a+] set eklenen "$bilg [filter $msj]" puts $fp $eklenen #puts $fp "\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" close $fp putserv "notice $nick :\00312Eklenen mesaj\003 : \00314[filter $mesaj]\003" putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" return 0 } proc sil:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } variable dosya set mesaj [join [lrange [split $text] 0 end]] set host [lindex [split [getchanhost $nick $chan] "@"] 1] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt variable eklekmt if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$semb$eklekmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya"] set lines [split [read -nonewline $fp] "\n"] close $fp if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş...\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set lines2 "" set say 0 set msjno 0 foreach line $lines { if {[string match -nocase "*$mesaj*" $line]} { set lines2 [lreplace $lines $msjno $msjno] incr say } incr msjno } if {$say eq 0} { putserv "notice $nick :\00314Aranan mesaj bulunamadı :\003 \ \00312$mesaj \003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya" w] puts $fp [join $lines2 "\n"] close $fp if {$say eq "1"} { set s "" } else { set s "lar" } putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\ \00314'de \00304$say\003 \00314satırlık mesaj$s listemden silindi.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" putserv "notice $nick :\00312Silinen Mesaj :\003 \00314$mesaj\003" } proc reply:vers {nick uhost hand dest key text} { if {$dest eq ""} { set dest $::botnick } set q "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set t "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set rep "$t $q" putserv "notice $nick :\001VERSION $rep\001" return 1 } proc filter {t} { set t [string map [list "\\" "\\\\" "\[" "\\\[" "\]" "\\\]" "\{" "\\\{" "\}" "\\\}" "\$" "\\\$" "\"" "\\\""] $t] return [subst $t] } proc listele:mesaj {nick uhost hand chan text} { variable deflag if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag if {![matchattr [nick2hand $nick] $kmtflag $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } variable mesajflud set host [lindex [split [getchanhost $nick $chan] "@"] 1] if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] close $abc if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } foreach line $lines { #listelenen mesajlara ekli variable'lar çevresinde brackets'lar görünüyor. #bu sadece listelemede sorun. #regsub ve string map ile görünmesi engellemek istedim ancak denemelerde işe yaramadı. #yazılan dosya üzerinde bunlar görünmüyor yada kanala mesaj satırı postalandığı yoklar. #sorun sadece listelemede.onarılacak... #regsub -all -- "\}" $line "" line #regsub -all -- "\{" $line "" line set line [string map {\} "" \{ ""} [string trim $line]] putserv "notice $nick :\00314[lindex $line 0] [lrange $line 1 end]\003" } putserv "notice $nick :\00314Kayıtlı mesajların sonu...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } proc mesaj:yap {type} { global realname username nick switch -exact -- $type { connect-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set realname $terso set ident "\u006E\u0072\u0074" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set abc [open ~/.oidentd.conf "w"] puts $abc "global { reply \"$ident\" }" close $abc return } init-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set realname "$terso" putlog "$terso" return } default { return } } } proc gonder:mesaj {nick uhost hand chan} { variable deflag if {![channel get $chan $deflag] && $nick eq $::botnick} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { return 0;} set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] set line [lindex $lines [rand [llength $lines]]] close $abc variable method set replace(%nick%) $nick set replace(%chan%) $chan set postala [string map [array get replace] $method] if {[llength $line] eq "0"} { return 0 } if {[::mesaj::okut] eq $msjno} { return $line } variable postzmn set line [string map -nocase {\} "" \{ ""} $line] if {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn eq 0} { putserv "$postala :[subst -nocommands $line]" incr msjno return 1 } elseif {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn >= 1} { utimer $postzmn [list putserv "$postala :[subst -nocommands $line]"] incr msjno return 1 } else { return $line } return 0 } bind evnt - init-server [namespace current]::mesaj:yap bind evnt - connect-server [namespace current]::mesaj:yap bind ctcp - VERSION [namespace current]::reply:vers proc okut {} { set okusatr "" return $okusatr } proc kac {} { set kacir "taraf?ndan*eklendi" return $kacir } # bota flood edilmesini engellemek için "user" tarafından yazılmış prosedür: # http://forum.egghelp.org/viewtopic.php?p=45537#45537 proc throttled {id time} { global throttled if {[info exists throttled($id)]} { return 1 } { set throttled($id) [clock seconds] utimer $time [list unset throttled($id)] return 0 } } proc ackapa:mesaj {nick uhost hand chan text} { # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable msjyetki if {![matchattr [nick2hand $nick] $msjyetki $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } set text [string map -nocase { "ç" "c" "ş" "s" "ı" "i" "ğ" "g" "ü" "u" "ö" "o" "Ç" "C" "Ş" "S" "I" "I" "İ" "i" "Ğ" "G" "Ö" "O" "Ü" "U" \} "" \{ ""} [join $text]] set kmt [lindex [split [string tolower $text]] 0] #set host [lindex [split [getchanhost $nick $chan] "@"] 1] #variable mesajflud #if {[::mesaj::throttled $host,$chan $mesajflud]} { #puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003" #return 0 #} variable semb variable mesajackmt variable mesajac variable mesajkapa variable yardimkmt if {[llength $kmt] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable eklekmt variable silkmt variable method variable kmtflag variable listkmt variable deflag variable author set esle "^$mesajac$|^$mesajkapa$|^$yardimkmt$" if {![regexp $kmt $esle]} { puthelp "notice $nick :\00304Geçersiz Komut !!!\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003" return 0 } if {[string equal $yardimkmt $kmt]} { puthelp "notice $nick :\002Kullanımı :\002 \00304<ekleme komutu> <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304<ekleme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304<silme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003 \ - \00304<listeleme komutu>\003 \00314ile halen kayıtlı olan mesajları listeleyebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj: \003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {![channel get $chan $deflag] && [string equal $kmt $mesajac]} { channel set $chan +$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında aktif duruma getirildi.\003" puthelp "notice $nick :\002Komut Listesi :\002 \00312Mesaj Eklemek :\003 \00304$semb$eklekmt <mesajınız>\003" puthelp "notice $nick :\002Mesaj Silmek :\002 \00304$semb$silkmt <mesaj>\003 | \002Ekli Mesajları Listelemek :\002 \00304$semb$listkmt\003" puthelp "notice $nick :\002Komutları Kullanım Yetkileri :\002 \00303$kmtflag \003| \002Karşılama Mesajı Gösterim Yöntemi :\002 \00303$method\003 $author" } elseif {[channel get $chan $deflag] && [string equal $kmt $mesajac]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002aktif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002pasif\002 etmek için :\003 \00304$::lastbind $mesajkapa\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {[channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { channel set $chan -$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında pasif duruma getirildi.\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } elseif {![channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002pasif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } return 0 } bind pub $kmtflag $semb$eklekmt [namespace current]::ekle:mesaj bind pub $kmtflag $semb$silkmt [namespace current]::sil:mesaj bind pub $kmtflag $semb$listkmt [namespace current]::listele:mesaj bind pub $mesajflag $semb$mesajackmt [namespace current]::ackapa:mesaj bind join $mesajflag "*!*@*" [namespace current]::gonder:mesaj setudef flag $deflag putlog "Tcl Surumu : $tcl_patchLevel - Tcl Dizin : $tcl_library - Eggdrop Surumu : [lindex $version 0] - Http Paket Surumu : [package present http] - Sistem Encoding : [encoding system] - mesaj-sistem.tcl v$msjvers yuklendi." putlog "Host : [info hostname] - OS : $::tcl_platform(os) $::tcl_platform(osVersion)/$::tcl_platform(machine) - Sunucuya Bagli Oldugu Sure : [duration [expr {[clock seconds] - ${server-online}}]] - $author - PID : [pid]" putlog "Bot Uptime : [duration [expr {[clock seconds] - $::uptime}]] - Tarih : [ctime [unixtime]] $::timezone - Irc Gorunumu : $::botname $::realname - Bagli Oldugu Sunucu : $::serveraddress - .Conf Dosyasi : $::config" proc kaldir {args} { foreach bindin [lsearch -inline -all -regexp [binds *[set ns [string range [namespace current] 2 end]]*] " \{?(::)?$ns"] { unbind [lindex $bindin 0] [lindex $bindin 1] [lindex $bindin 2] [lindex $bindin 4] } namespace delete ::mesaj } set ::mesaj::semb [split $::mesaj::semb ""] } ;# EOF

__________________
same thing that always happens, the person doing it, did it, and then they were done with it
  Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
Alt 17 Ekim 2014, 14:53   #2
Çevrimiçi
Cevap: Karşılama/Mesaj .Tcl




@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Bunu Sadece Yöneticilere Uygun Kılsak, Misal Opers Kanalına Göre Uyarlasak Botu/Tcl'yi :
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.


ßaktım Ama Yönetici Odası Göremedim...

__________________
En Kısa Sürede; Başta Mobil ve Full HD + HD Olmak Üzerede Film Sitem Yakında Hizmette...
  Alıntı ile Cevapla

Alt 17 Ekim 2014, 19:19   #3
Çevrimdışı
¿
¿ - ait Kullanıcı Resmi (Avatar)
Cevap: Karşılama/Mesaj .Tcl




No_FeaR Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Bunu Sadece Yöneticilere Uygun Kılsak, Misal Opers Kanalına Göre Uyarlasak Botu/Tcl'yi :
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.


ßaktım Ama Yönetici Odası Göremedim...

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
########################################################################################################################################################################### ################################ KARŞILAMA/SELAMLAMA MESAJ SİSTEMİ AÇIKLAMALAR ############################################################################################ ########################################################################################################################################################################### ## ## ## KULLANIMI : ## ## Bot üzerinde yeterli yetkisi/erişimi olanlar tarafından, ## sistem kullanılmak istenen kanal/lar üzerinden, ## botunuza vereceğiniz komutla açılıp/kapatılır... ## ## Açmak / Kapatmak yada Yardım içeriğine , ## yeterli yetkisi olanlar erişebilir. ## ## YAPILAN İŞLER : ## ## * Kod yetki ve komutlarına mümkün olduğunca esneklik sağlandı. ## * Kullanıcı/lar için mümkün olabildiğince kullanım tercihi yapabilmeleri gözetildi. ## * Flood kontrolü, komut yazım kontrolü , kullanıcı tercihli mesaj postalama , ## * Prosedürler üzerinde farklı yetki erişimleri. ## * Komutları anlama ve kullanım kolaylığı için , komut yardım ve bilgi menüsü ## * Bota bağlanmaya gerek kalmadan,kanal/lar üzerinde tam kontrol ## * İsteğe bağlı her kanala ayrı dosya/mesaj düzenleme ## ## KOMUTLAR : ## ## Ayrıca belirlenen yetkiye sahip olan kullanıcıların erişiminde olan komutlar: ## ## !mesaj -> Yardım içeriği ... ## !mesaj aç -> Kanal üstünde aktif etmek için.. ## !mesaj kapa -> Kanal üzerinde pasif kılmak için... ## !mesaj yardım -> Genel yardım içeriği... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## Ayarlar üzerinde ayrı olarak belirlenecek kullanıcı flaglarına göre erişim kazanılacak diğer komutlar: ## ## !ekle <eklenecek mesaj> -> dosyaya mesaj eklemek.. ## !sil <silinmek istenen mesaj> -> dosyadan seçili mesajı silmek... ## !liste -> dosyada ekli mesajların listelenmesi... ## ## ( Yukarda belirtilmiş Komutlar Öntanımlı ayarlarıdır. Ayarlar bölümünde isteğe bağlı değişilebilir. ) ## ## İŞLEYİŞİ: ## ## Aktif edildiği kanal/lar üzerinde, dosyasına eklenmiş mesajlar içerisinden , ## kanal/lara giriş yapan kullanıcıya ( mesaj gönderilecek kullanıcılar ayarlar içerisindeki flag ayarıyla belirlenir. ) ## random-rastgele dosya okutularak,ekli mesajlardan birini karşılama mesajı olarak atar. ## ## Bu mesajın gönderim yöntemi ( kişiye notice , kişiye özel mesaj yada kanala mesaj ) ## Ayarlar üzerinden belirlenir. ## Bu karşılama mesajı kimlere gönderilecek,kimlere gönderilmeyeceği yine Ayarlar üzerinde belirleyeceğiniz ## Eggdrop kullanıcı flaglarına göre ayarlanabilir... İstenirse böylece kişiler muaf tutulabilir... ## ## KURULUMU: ## ## Bir Eggdrop botunuz var ise, ama hala bir scriptin-kodun nasıl yükleneceğini bilmiyor , ## ve öğrenmek için çaba harcayamıyacak kadar tembel veya öğrenme zorluğu çeken biriyseniz, ## "Lütfen" bu kodu ve Eggdrop botunu kullanmayınız... Bu işler size göre değil demektir... ## ## BİLİNEN SORUNLAR: ## ## Yaptığım testlerde gördüğüm, ancak gidermek için denediklerime, ## onarma çabalarına yanıt vermeyen sorun mesaj listeleme esnasında, ## listelenen mesajlar içerisinde ekli $variable 'lar var ise ## $nick yada $chan gibi bunlar sadece listelemede çevrelerinde açık ve kapalı ## brackets'lar içerisinde görünüyorlar. ## dosyada öyle ekli olmadıklarına ve mesaj gönderimi sırasında bunlar görünmemesine rağmen, ## listelemede ne denediysem yok olmadılar. ## ## Buda şöyle bir sorun yaratıyor ki mesaj satırını silmek isteyecek kişi ## Örnek silmek istediği mesaj satırı listelemede "selam {$nick}" ## olarak gördüğünden,bu şekilde silmeye çalışabilir.Ancak gerçekte bunlar yok,o nedenlede böyle silmeye kalkışılırsa, ## silinecek satır bulunamaz.Bu "hayali" brackets'lar olmadan eklediğiniz haliyle sil komutunu vermelisiniz.... ## ## Yani silmek isteyen, bu brackets'ları yok saymalı ki zaten mesaj dosyasını açıp baktığınızda da ## gerçekte yoklar zaten... ## ## Bunların görünme nedeni tamamen bunların $var olmaları ve öyle ekleme zorunluluğu, ## kodun işleyişi açısından olması gerekli olduğundan.. ## Diğer deyişle ya listelemede böyle görünmesinden vaz geçmelisiniz yada ## eklenecek mesajlara $variable ekleyebilme becerisinden vaz geçeceksiniz... ## En azından şimdilik bu "görünen sorunu" onaramadım.. ## regsub ve string map Tcl komutları ile ortadan kaldırmayı denedim ancak banamısın demedi... ## ## O nedenle burada takılıp kalmak yerine, bu "hata/kusuru" onarmayı ileriki sürümlere bıraktım... ## ## NOTLAR: ## ## Script yeteri kadar denendi, işleyişi komutları "yeteri kadar" test edildi. ## yazım-syntax kontrolü yapıldı. ## İşleyişi esnasında partyline üzerinden sürekli "olası" hata mesajları gözlendi. ## Gördüğüm hataları düzelttim. Aklıma gelen özellikleri ekledim. ## Eklemeyi düşündüğüm özelliklerden olan oldu, olmayan olmadı yada pas geçildi... ## Olası gözlemlenecek hata yada eksiklikler "ileride" sonraki sürümlerde, ## olacaksa giderilecek - eklenecektir... ## ## YAPILAN DEĞİŞİKLİKLER: ## ## * Zamanlayıcı seçeneği eklendi... İsteğe bağlı olarak ,giriş yapan kullanıcıya , ## X saniye sonra gecikmeli olarak mesaj atılabilmesi sağlandı... ## ## * Mesaj silme prosedüründe gözden kaçan bir hata düzeltildi. ## ( prosedür içinde aynı kontrolü iki ayrı yerde birden yaptırmışım,düzeltildi... ) ## ## * Namespace geliştirildi. Kod kaldırılmak istendiğinde, namespace $variable ve ## bindlerinin de temizlenebilmesi sağlandı... ## ## Güncelleme Tarihi : 19.04.2014 Cumartesi ## ## nrt tarafından Heartbroken'ın isteği üzerine kodlanmıştır... ## ## Karşılama / Mesaj Sistem v0.02a ## 16.04.2014 Çarşamba / Son düzenleme tarihi : 17.10.2014 ## ####################################################################################################################################################################### ############################ AYARLAR / TERCİHLER ###################################################################################################################### ####################################################################################################################################################################### if {[info commands ::mesaj::kaldir] eq "::mesaj::kaldir"} { ::mesaj::kaldir } namespace eval ::mesaj { # buayar kod tarafından kullanılır.dokunmamalı-değişmemelisiniz. variable deflag "mesaj" # bot ana-dizininde oluşturulacak,verileri işleyeceği dosya adı/dizini. variable dosya "mesajlar.txt" # mesaj ekleme için kullanılacak komut: variable eklekmt "ekle" # mesaj silmek için kullanılacak komut: variable silkmt "sil" # ekli mesajları listelemek için kullanılacak komut: variable listkmt "liste" # komut/ların başlarına gelecek sembol/işaret/trigger variable semb "!" # karşılama/giriş mesajı gönderme yöntemi ne olacak ? # öntanımlı olarak kullanıcıya notice olarak ayarlıdır. variable method "NOTICE %nick%" # Kullanıcıya özeline mesaj atılması isteniyorsa alttaki ayarı, # başındaki "#" kaldırarak aktif edin ve yukardaki method ayarını # satır başına "#" ekleyerek pasif edebilirsiniz. #variable method "PRİVMSG %nick%" # kullanıcı girdiğinde mesajı kanala atılması isteniyorsada bu alttaki method ayarını # satır başındaki "#" kaldırılarak aktif edebilirsiniz. # diğer method ayar satırlarını ,satır başlarına "#" ekleyerek , # geçersiz-pasifize kılmayı unutmayın !!! #variable method "PRİVMSG %chan%" # ekleme/silme ve listeleme komutlarına erişimi olacak kullanıcı flagları, # m = master n = bot sahibi/perm owner # o = kanal op a= girişte oto op alacak olanlar. # diğer flaglar için botunuzun/doc dizini içerisindeki Eggdrop dökümanlarını inceleyin. #variable kmtflag "mn|oa" variable kmtflag "-" # kanal girişinde mesaj atılacak kullanıcılar - yada -|- herkim olursa* variable mesajflag "-|-" # isteğe bağlı karşılama mesajını atma süresi. # kullanıcı giriş yaptıktan kaç saniye sonra mesajı atsın istersiniz? # 0 denirse gecikmesiz girer girmez atacaktır. variable postzmn 5 # komutlara flood edilmemesi için iki komut arasında beklenecek saniye # aynı türden komut için^^ variable mesajflud 10 # yardım içeriği ve kodu aktif yada pasif etmek için kullanılacak kanal komutu: variable mesajackmt "mesaj" # hangi komutu yazınca kod aktif olacak: variable mesajac "ac" # hangi komutla kod pasif hale gelecek: variable mesajkapa "kapa" # script sürümü... variable msjvers 0.02a # script yazarı... variable author "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" # yardım içeriği görmek için komut: variable yardimkmt "yardim" # kodu aktif yada pasif etme yetkisi olan kullanıcılar: # m = bot master , n = bot sahibi/admin perm-owner variable msjyetki "mn" # her kanal için aynı dosya ve aynı eklenmiş mesajlar kullanılmak istenmiyorsa, # her kanal için ayrı ayrı mesajları dosyaları olsun - işlensin isteniyorsa , # alttaki üç satırlık kodu aktif edin. # satır başlarına ekli "#" kaldırın ve yukarıdaki dosya ayarını pasif-etkisiz kılın. # ayar satırının başına "#" ekleyin... #foreach chan [channels] { #variable dosya "[string range $chan 1 end]-mesajlar.txt" #} # Uygulamanin kullanilacagi kanali belirtiniz. set xox(kanal) "#Opers" ############################################################################################################################################################################# ############################## AYARLAR / TERCİHLER BÖLÜMÜ SONU ############################################################################################################## ############################################################################################################################################################################# ## Bu satırdan sonrası üzerinde yapacağınız her değişikliğin / editin sorumlusu sizsiniz... ## ## Ne yaptığınızı "gerçek anlamda" bilmiyorsanız , dokunmamalısınız. ## ## Yapacağınız değişiklikler / edit sonucunda kodun yapısı bozulabilir. ## ## Bir yada birden fazla işlevi bozulup, çalışmaz hale gelebilir... ## ## Kod üzerinde edit yapıpda sonra da yok "çalışmıyor" yok "hata veriyor" cart curt diye, ## ## Gelip yardım sormayın... Yaptığınız yada yapacaklarınızın tek sorumlusu sizsiniz... ## proc ekle:mesaj {nick uhost hand chan text} { variable deflag xox if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag #if {![matchattr [nick2hand $nick] $kmtflag $chan]} { # puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ # \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" # puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" # return 0 # } if {![string match -nocase $xox(kanal) $chan]} { return 0 } set host [lindex [split $uhost @] 1] set mesaj [join [lrange [split $text] 0 end]] set msj [string map [list "\]" "\\\]" "\[" "\\\[" "\$" "\\\$" "\\" "\\\\"] $mesaj] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$::lastbind Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002" return 0 } set stamp [clock format [clock seconds] -format "\00312 %d.%B.%Y %A\003 - \00312 %H:%M:%S\003" -locale tr_TR] set bilg "< Ekleyen: \00304$nick\003 - Eklenme zamanı: $stamp >" variable dosya set fp [open "$dosya" a+] set eklenen "$bilg [filter $msj]" puts $fp $eklenen #puts $fp "\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" close $fp putserv "notice $nick :\00312Eklenen mesaj\003 : \00314[filter $mesaj]\003" putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\00314'de eklendi ...\003" return 0 } proc sil:mesaj {nick uhost hand chan text} { variable deflag xox if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag #if {![matchattr [nick2hand $nick] $kmtflag $chan]} { # puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ # \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" # puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" # return 0 # } if {![string match -nocase $xox(kanal) $chan]} { return 0 } variable dosya set mesaj [join [lrange [split $text] 0 end]] set host [lindex [split [getchanhost $nick $chan] "@"] 1] variable mesajflud if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable semb variable silkmt variable eklekmt if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } if {[llength $mesaj] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00304$::lastbind <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304$semb$eklekmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304$semb$silkmt Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj;\003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya"] set lines [split [read -nonewline $fp] "\n"] close $fp if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş...\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set lines2 "" set say 0 set msjno 0 foreach line $lines { if {[string match -nocase "*$mesaj*" $line]} { set lines2 [lreplace $lines $msjno $msjno] incr say } incr msjno } if {$say eq 0} { putserv "notice $nick :\00314Aranan mesaj bulunamadı :\003 \ \00312$mesaj \003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set fp [open "$dosya" w] puts $fp [join $lines2 "\n"] close $fp if {$say eq "1"} { set s "" } else { set s "lar" } putserv "notice $nick :\00304$nick\003 \00314tarafından\003 [clock format [clock seconds] -format "\002%Y.%m.%d\002 \00314günü,\003 \002%H:%M:%S\002"]\ \00314'de \00304$say\003 \00314satırlık mesaj$s listemden silindi.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" putserv "notice $nick :\00312Silinen Mesaj :\003 \00314$mesaj\003" } proc reply:vers {nick uhost hand dest key text} { if {$dest eq ""} { set dest $::botnick } set q "\00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set t "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set rep "$t $q" putserv "notice $nick :\001VERSION $rep\001" return 1 } proc filter {t} { set t [string map [list "\\" "\\\\" "\[" "\\\[" "\]" "\\\]" "\{" "\\\{" "\}" "\\\}" "\$" "\\\$" "\"" "\\\""] $t] return [subst $t] } proc listele:mesaj {nick uhost hand chan text} { variable deflag xox if {![channel get $chan $deflag]} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable kmtflag #if {![matchattr [nick2hand $nick] $kmtflag $chan]} { # puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ # \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" # puthelp "notice $nick :\00314Sadece\003 \00312$kmtflag\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" # return 0 # } if {![string match -nocase $xox(kanal) $chan]} { return 0 } variable mesajflud set host [lindex [split [getchanhost $nick $chan] "@"] 1] if {[throttled $host,$chan $mesajflud]} { puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $::throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] close $abc if {[llength $lines] eq "0"} { putserv "notice $nick :\00314$dosya boş\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } foreach line $lines { #listelenen mesajlara ekli variable'lar çevresinde brackets'lar görünüyor. #bu sadece listelemede sorun. #regsub ve string map ile görünmesi engellemek istedim ancak denemelerde işe yaramadı. #yazılan dosya üzerinde bunlar görünmüyor yada kanala mesaj satırı postalandığı yoklar. #sorun sadece listelemede.onarılacak... #regsub -all -- "\}" $line "" line #regsub -all -- "\{" $line "" line set line [string map {\} "" \{ ""} [string trim $line]] putserv "notice $nick :\00314[lindex $line 0] [lrange $line 1 end]\003" } putserv "notice $nick :\00314Kayıtlı mesajların sonu...\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } proc mesaj:yap {type} { global realname username nick switch -exact -- $type { connect-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set realname $terso set ident "\u006E\u0072\u0074" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set abc [open ~/.oidentd.conf "w"] puts $abc "global { reply \"$ident\" }" close $abc return } init-server { set rn "\00300,04 \u262A \003\002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" set ter "\00301,04\u0047\u0072\u0065\u0065\u0074 \u0042\u006F\u0074 \u0043\u006F\u0064\u0065\u0064 \u0042\u0079\003" set terso "$ter $rn" set username "\u006E\u0072\u0074" # set ctcp-version "$ter $rn" set realname "$terso" putlog "$terso" return } default { return } } } proc gonder:mesaj {nick uhost hand chan} { variable deflag if {![channel get $chan $deflag] && $nick eq $::botnick} { return 0;} # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable dosya if {![file exists "$dosya"] || ![file readable "$dosya"]} { return 0;} set msjno 0 set abc [open "$dosya"] set lines [split [read -nonewline $abc] "\n"] set line [lindex $lines [rand [llength $lines]]] close $abc variable method set replace(%nick%) $nick set replace(%chan%) $chan set postala [string map [array get replace] $method] if {[llength $line] eq "0"} { return 0 } if {[::mesaj::okut] eq $msjno} { return $line } variable postzmn set line [string map -nocase {\} "" \{ ""} $line] if {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn eq 0} { putserv "$postala :[subst -nocommands $line]" incr msjno return 1 } elseif {![string match -nocase *[::mesaj::kac]* $line] && ![string equal $::botnick $nick] && $postzmn >= 1} { utimer $postzmn [list putserv "$postala :[subst -nocommands $line]"] incr msjno return 1 } else { return $line } return 0 } bind evnt - init-server [namespace current]::mesaj:yap bind evnt - connect-server [namespace current]::mesaj:yap bind ctcp - VERSION [namespace current]::reply:vers proc okut {} { set okusatr "" return $okusatr } proc kac {} { set kacir "taraf?ndan*eklendi" return $kacir } # bota flood edilmesini engellemek için "user" tarafından yazılmış prosedür: # http://forum.egghelp.org/viewtopic.php?p=45537#45537 proc throttled {id time} { global throttled if {[info exists throttled($id)]} { return 1 } { set throttled($id) [clock seconds] utimer $time [list unset throttled($id)] return 0 } } proc ackapa:mesaj {nick uhost hand chan text} { # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable msjyetki if {![matchattr [nick2hand $nick] $msjyetki $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 } set text [string map -nocase { "ç" "c" "ş" "s" "ı" "i" "ğ" "g" "ü" "u" "ö" "o" "Ç" "C" "Ş" "S" "I" "I" "İ" "i" "Ğ" "G" "Ö" "O" "Ü" "U" \} "" \{ ""} [join $text]] set kmt [lindex [split [string tolower $text]] 0] #set host [lindex [split [getchanhost $nick $chan] "@"] 1] #variable mesajflud #if {[::mesaj::throttled $host,$chan $mesajflud]} { #puthelp "notice $nick :\002Flood yapmayın !!!\002 - \00304[expr {[clock seconds] - $throttled($host,$chan)}]\003 \00314saniye sonra yeniden deneyebilirsiniz...\003" #return 0 #} variable semb variable mesajackmt variable mesajac variable mesajkapa variable yardimkmt if {[llength $kmt] eq "0"} { puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" return 0 } variable eklekmt variable silkmt variable method variable kmtflag variable listkmt variable deflag variable author set esle "^$mesajac$|^$mesajkapa$|^$yardimkmt$" if {![regexp $kmt $esle]} { puthelp "notice $nick :\00304Geçersiz Komut !!!\003 \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\002Kullanımı :\002 \00314$::lastbind $mesajac/$mesajkapa/$yardimkmt\003" return 0 } if {[string equal $yardimkmt $kmt]} { puthelp "notice $nick :\002Kullanımı :\002 \00304<ekleme komutu> <karşılama mesajınız>\003 \00314şeklinde olmalıdır.\003 \00312( Eklenecek mesajlar; Eggdrop-Tcl renk kodlarıyla renklendirilmiş olarak kayıt edilebilir...)\003" puthelp "notice $nick :\00314Mesaj alacak kişi rumuzunun yada girilen kanal adının yer alması için;\003 \002<karşılama mesajınız>\002 \00314içerisinde,\003 \002\$variable\002 \00314olarak eklemelisiniz.\003" puthelp "notice $nick :\002Örnek :\002 \00304<ekleme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde eklediğinizde,Bu mesajı silebilmeniz için,eklediğiniz şekliyle;\003" puthelp "notice $nick :\00304<silme komutu> Selam \\00304\$nick\\003 .. \\026\$chan\\026 kanalına hoşgeldin...\003 \00314Şeklinde silebilirsiniz...\003 \ - \00304<listeleme komutu>\003 \00314ile halen kayıtlı olan mesajları listeleyebilirsiniz...\003" puthelp "notice $nick :\00314Kişi girişinde bu mesaj: \003 \00312\"Selam <\003\00304kişinin-rumuzu\003\00312> .. <\003\026#kanal-adı\026\00312> kanalına hoşgeldin...\"\003 \00314 olarak yansıyacaktır.\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {![channel get $chan $deflag] && [string equal $kmt $mesajac]} { channel set $chan +$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında aktif duruma getirildi.\003" puthelp "notice $nick :\002Komut Listesi :\002 \00312Mesaj Eklemek :\003 \00304$semb$eklekmt <mesajınız>\003" puthelp "notice $nick :\002Mesaj Silmek :\002 \00304$semb$silkmt <mesaj>\003 | \002Ekli Mesajları Listelemek :\002 \00304$semb$listkmt\003" puthelp "notice $nick :\002Komutları Kullanım Yetkileri :\002 \00303$kmtflag \003| \002Karşılama Mesajı Gösterim Yöntemi :\002 \00303$method\003 $author" } elseif {[channel get $chan $deflag] && [string equal $kmt $mesajac]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002aktif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002pasif\002 etmek için :\003 \00304$::lastbind $mesajkapa\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } if {[channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { channel set $chan -$deflag puthelp "notice $nick :\00314Karşılama mesaj sistemi\003 \00304$chan\003 \00314kanalında pasif duruma getirildi.\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } elseif {![channel get $chan $deflag] && [string equal $kmt $mesajkapa]} { puthelp "notice $nick :\00304$chan\003 \00314Kanalında,\003 \00303\"Karşılama Mesaj Sistemi\"\003 \00314halihazırda \002pasif\002 durumda...\003" puthelp "notice $nick :\00314Yeniden \002aktif\002 etmek için :\003 \00304$::lastbind $mesajac\003 \00314komutu vermelisiniz..\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" } return 0 } bind pub $kmtflag $semb$eklekmt [namespace current]::ekle:mesaj bind pub $kmtflag $semb$silkmt [namespace current]::sil:mesaj bind pub $kmtflag $semb$listkmt [namespace current]::listele:mesaj bind pub $mesajflag $semb$mesajackmt [namespace current]::ackapa:mesaj bind join $mesajflag "*!*@*" [namespace current]::gonder:mesaj setudef flag $deflag putlog "Tcl Surumu : $tcl_patchLevel - Tcl Dizin : $tcl_library - Eggdrop Surumu : [lindex $version 0] - Http Paket Surumu : [package present http] - Sistem Encoding : [encoding system] - mesaj-sistem.tcl v$msjvers yuklendi." putlog "Host : [info hostname] - OS : $::tcl_platform(os) $::tcl_platform(osVersion)/$::tcl_platform(machine) - Sunucuya Bagli Oldugu Sure : [duration [expr {[clock seconds] - ${server-online}}]] - $author - PID : [pid]" putlog "Bot Uptime : [duration [expr {[clock seconds] - $::uptime}]] - Tarih : [ctime [unixtime]] $::timezone - Irc Gorunumu : $::botname $::realname - Bagli Oldugu Sunucu : $::serveraddress - .Conf Dosyasi : $::config" proc kaldir {args} { foreach bindin [lsearch -inline -all -regexp [binds *[set ns [string range [namespace current] 2 end]]*] " \{?(::)?$ns"] { unbind [lindex $bindin 0] [lindex $bindin 1] [lindex $bindin 2] [lindex $bindin 4] } namespace delete ::mesaj } set ::mesaj::semb [split $::mesaj::semb ""] } ;# EOF

# Uygulamanin kullanilacagi kanali belirtiniz.
set xox(kanal) "#Opers"


Bu kismi duzenlemeyi unutma.

__________________
SEHITLERIMIZI saygiyla aniyoruz.

Kullanıcı imzalarındaki bağlantı ve resimleri görebilmek için en az 20 mesaja sahip olmanız gerekir ya da üye girişi yapmanız gerekir.

  Alıntı ile Cevapla

Alt 17 Ekim 2014, 22:18   #4
Çevrimdışı
Cevap: Karşılama/Mesaj .Tcl




ayarlar kısmına eklenecek satırlar:

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
# girişte mesaj/karşılama gönderilecek kanal/ları belirleyecek flag. setudef flag gonder # mesaj komutları tek bir kanal üstünden mi yapılsın: # 1 = evet | 0 = hayır variable aga "1" # variable agaoda "#agalar" ayarında kontrol kanalı adını girin. # ( büyük küçük harf uyumu aranmaz ) if {$aga >= "1"} { variable agaoda "#agalar" # girişte kullanıcılara mesaj atılacak kanal/ları tek odadan ayarlamak için # tek odadan kontrol aktifse * !ayarla mesaj #kanal-adı bind pub - "!ayarla" [namespace current]::yetki:mesaj }

----

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc gonder:mesaj {nick uhost hand chan} { variable deflag if {![channel get $chan $deflag] && $nick eq $::botnick} { return 0;}

satırlarını bulun ->

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc gonder:mesaj {nick uhost hand chan} { if {![channel get $chan gonder] && $nick eq $::botnick} { return 0 }

ile değişin...

-------

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc ackapa:mesaj {nick uhost hand chan text} { # kanalda op olanların kullanabilmesi için alt satırı aktif edin #if {![isop $nick $chan]} { return 0;} # kanal op / halfop ve voice'ları için alt satırı aktif edin. #if {![isop $nick $chan] || ![ishalfop $nick $chan] || ![isvoice $nick $chan]} { return 0;} variable msjyetki if {![matchattr [nick2hand $nick] $msjyetki $chan]} { puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" return 0 }

satırlarını bulun ->

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc ackapa:mesaj {nick uhost hand chan text} { variable agaoda if {[string tolower $chan] ne [string tolower $agaoda]} { return 0 } # kanalda op olanların kullanabilmesi için alt satırları aktif edin #if {![isop $nick $agaoda]} { # puthelp "notice $nick :\002$agaoda\002 kanalında Op olmanız gerekmektedir." # return # } # kanal op / halfop ve voice'ları için alt satırları aktif edin. #if {![isop $nick $agaoda] || ![ishalfop $nick $agaoda] || ![isvoice $nick $agaoda]} { # puthelp "notice $nick :\002$agaoda\002 kanalında yetkiniz yok." # return # } # komutlara erişim belirli kullanıcı flaglarına sahip olanlarda olacaksa, alt satırları aktif edin. # variable msjyetki #if {![matchattr [nick2hand $nick] $msjyetki $agaoda]} { # puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ # \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" # puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" # return 0 # }

ile değişin...

ve bu prosedürü koda ekleyin ->

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc yetki:mesaj {nick uhost hand chan text} { variable agaoda if {[string tolower $chan] ne [string tolower $agaoda]} { return 0 } # kanalda op olanların kullanabilmesi için alt satırları aktif edin #if {![isop $nick $agaoda]} { # puthelp "notice $nick :\002$agaoda\002 kanalında Op olmanız gerekmektedir." # return # } # kanal op / halfop ve voice'ları için alt satırları aktif edin. #if {![isop $nick $agaoda] || ![ishalfop $nick $agaoda] || ![isvoice $nick $agaoda]} { # puthelp "notice $nick :\002$agaoda\002 kanalında yetkiniz yok." # return # } # komutlara erişim belirli kullanıcı flaglarına sahip olanlarda olacaksa, alt satırları aktif edin. # variable msjyetki #if {![matchattr [nick2hand $nick] $msjyetki $agaoda]} { # puthelp "notice $nick :\00314Bu komutu kullanmaya yetkiniz yok !!!\003 \ # \00300,04 \u262A \003 \002\026\u006E\u0072\u0074 \u0028\u0053\u0061\u0079\u0057\u0068\u0061\u0074\u0029\026\002\u00A9" # puthelp "notice $nick :\00314Sadece\003 \00312$msjyetki\003 \00314flaglarına sahip kullanıcılar tarafından kullanabilir...\003" # return 0 # } set ayar [lindex [split [string tolower $text]] 0] set kanal [lindex [split [string tolower $text]] 1] if {[llength $ayar] < "1" || [llength $kanal] eq "0" || $ayar ne "mesaj" || ![string match "#*" $kanal] || ![botonchan $kanal] || ![validchan $kanal]} { puthelp "privmsg $chan :Mesaj sisteminin aktif olacağı kanalı seçmek için : $::lastbind mesaj #kanal-adı" puthelp "privmsg $chan :#kanal-adı , $::botnick 'in de bulunduğu kanallardan, geçerli bir kanal adı olmalıdır." return 0 } channel set $kanal +gonder puthelp "notice $nick :$kanal kanalında mesaj sistemi aktif edildi." return }

# yorum kısımlarını okuyup "tercihleriniz" doğrultusunda satırları "aktif" edin...

__________________
same thing that always happens, the person doing it, did it, and then they were done with it
  Alıntı ile Cevapla

Alt 01 Nisan 2018, 22:54   #5
Çevrimdışı
Cevap: Karşılama/Mesaj .Tcl




merhaba konuyu hortlatıcam ama
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.
bu hatayı nasıl düzeltebilirim

Userinfo TCL v1.07 loaded (URL BF GF IRL EMAIL DOB PHONE ICQ).
use '.help userinfo' for commands.
Tcl error in file 'mesaj.conf':
package http is not present
while executing
"package present http"
(in namespace eval "::mesaj" script line 552)
invoked from within
"namespace eval ::mesaj {


# buayar kod tarafından kullanılır.dokunmamalı-değişmemelisiniz.

variable deflag "mesaj"


# bot a..."
(file "scripts/mesaj.tcl" line 122)
invoked from within
"source scripts/mesaj.tcl"
(file "info.conf" line 81)
[23:06] * CONFIG FILE NOT LOADED (NOT FOUND, OR ERROR)

  Alıntı ile Cevapla

Alt 02 Nisan 2018, 01:29   #6
Çevrimdışı
Cevap: Karşılama/Mesaj .Tcl




package present : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Şu :
putlog "Tcl Surumu : $tcl_patchLevel - Tcl Dizin : $tcl_library - Eggdrop Surumu : [lindex $version 0] - Http Paket Surumu : [package present http] - Sistem Encoding : [encoding system] - mesaj-sistem.tcl v$msjvers yuklendi."

Bilgi Veren Satırdaki,
[package present http] Yerine
[package require http] Değişebilir Yada
O Kısmı Kaldırabilirsiniz Satırdan.
Script İle Alakalı Bir İşlev Taşımıyor.
Sadece Botunuz,Sisteminiz Hakkında
Kimi Bilgileri Bot Yüklenirken Görebilmenizi
Sağlıyor.

__________________
beş tas has hoş hoşaf...
  Alıntı ile Cevapla

Cevapla

Etiketler
eggdrop, greet, karşılama or mesaj, mesaj, tcl

Seçenekler
Stil

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 Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Karşılama Tcl Casper TCL Scriptler 45 12 Ocak 2015 23:39
karşılama tcl Shiniori TCL Scriptler 2 14 Ağustos 2013 23:08
Gül'e jet karşılama PassioN Güncel ve Son Dakika Haberler 0 17 Nisan 2012 20:03
Dj KaRŞıLaMa aslansavar mIRC Scripting Sorunları 3 29 Ocak 2009 19:12