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

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   Karşılama/Mesaj .Tcl (https://www.ircforumlari.net/tcl-scriptler/628992-karsilama-mesaj-tcl.html)

saywhat 17 Ekim 2014 08:03

Karşılama/Mesaj .Tcl
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:

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


No_FeaR 17 Ekim 2014 14:53

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 :=)

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

¿ 17 Ekim 2014 19:19

Cevap: Karşılama/Mesaj .Tcl
 
Alıntı:

No_FeaR Nickli Üyeden Alıntı (Mesaj 1041515196)
@[Ü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 :=)

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

Kod:

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

saywhat 17 Ekim 2014 22:18

Cevap: Karşılama/Mesaj .Tcl
 
ayarlar kısmına eklenecek satırlar:

Kod:

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

proc gonder:mesaj {nick uhost hand chan} {
        variable deflag
  if {![channel get $chan $deflag] && $nick eq $::botnick} { return 0;}

satırlarını bulun ->

Kod:

proc gonder:mesaj {nick uhost hand chan} {
  if {![channel get $chan gonder] && $nick eq $::botnick} { return 0 }

ile değişin...

-------

Kod:

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:

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:

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

aquabluee 01 Nisan 2018 22:54

Cevap: Karşılama/Mesaj .Tcl
 
merhaba konuyu hortlatıcam ama :) 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)

Heartbroken 02 Nisan 2018 01:29

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.


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

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net