mIRCForumlari.Net

mIRCForumlari.Net (https://www.mircforumlari.net/)
-   TCL Scriptler (https://www.mircforumlari.net/tcl-scriptler/)
-   -   Karşılama/Mesaj .Tcl (https://www.mircforumlari.net/tcl-scriptler/15512-karsilama-mesaj-tcl.html)

RahmetLi 05 Nisan 2023 04:39

Karşılama/Mesaj .Tcl
 
PHP- Kodu:


       
PHP- Kodu:

       

               

               
               

                        ###########################################################################################################################################################################
################################ 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
               

               

               

       




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

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.


Navbar with Avatar by Motorradforum