Tekil Mesaj gösterimi
Alt 17 Ekim 2014, 19:19   #3
Çevrimdışı
¿
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Karşılama/Mesaj .Tcl




No_FeaR Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 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 25 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.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet