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/)
-   -   IUCtools tcl kanal programları tclsi (https://www.ircforumlari.net/tcl-scriptler/1073438-iuctools-tcl-kanal-programlari-tclsi.html)

IUC 04 Aralık 2025 21:03

IUCtools tcl kanal programları tclsi
 
PHP- Kodu:


# IUCTools
# IUC aralık 2025
# Eggdrop yönetimi için küçük yardımcı programlar

## NOT ##
# Tüm komutlara global +m (master)
# veya local +n (sahibi) erişebilir.
# Kullanıcı +n ise, sonuçlar
# sahip olduğu kanallarla sınırlıdır.

## KOMUTLAR ##
# .getattr <özellik>
#    Her kanal için <özellik> değerini döndürür
# .toggle <bayrak özniteliği> [kanal]
#    Kanalda özniteliği (bayrak türü olmalıdır) değiştirir
#    veya hedef belirlenmemişse tüm kanallarda değiştirir
# .achannels [attr]
#    attr etkin olan kanalların listesini döndürür
# .mcset [#chan[,#chan]] <[+|-]attr> [değer] [+|-özellik [değer]] [+|-özellik [değer]]
#    Özelliklerin değerini toplu olarak değiştirir. Aşağıdaki örnekleri inceleyin.

## ÖRNEKLER ##
# - Daha önce belirtildiği gibi, kullanıcı yerel +n ise, yalnızca
#    sahip olduğu kanallar etkilenecektir
# - Boşluk içeren dizeler {} içine alınmalıdır
# - Bir özniteliği sıfırlamak (boşaltmak) için, {} değerini ayarlayın.
# * .mcset need-op {} need-invite {putserv “PRIVMSG $::owner :Beni davet et!”} mytest {}
#    Bu, need-op ve mytest (dize veya int) özniteliklerini boşaltacak ve
#    putserv “PRIVMSG $::owner :Beni davet et!” need-invite'da ayarlanacaktır.
# * .mcset #chan1,#chan2 +guard -bitch wmsg {“merhaba arkadaşlar”}
#    Bu, guard'ı açar, bitch'i kapatır ve
#    wmsg'yi #chan1 ve #chan2'de “merhaba arkadaşlar” olarak ayarlar.



namespace eval iuctools {

   
variable version "0.3"
   
variable author "IUC"

   
# Kanallar için bir özniteliğin dönüş değeri
   
proc getattr {handle idx text} {
      
set attr [lindex $text 0]
      if {
$attr eq ""} {
         
putlog "Error: use .getattr attribute"
         
return
      }
      if {[::
pltools::getatype $attreq "unknow"} {
         
putlog "Error: $attr is not a valid attribute"
         
return
      }
      foreach 
[gethandlechans $handle] {
         
putlog "$attr for $c : [channel get $c $attr]"
      
}
   }

   
# Kanallar için bir özniteliğin dönüş değeri
   
proc toggle {handle idx text} {
      
lassign [split $textattr chan
      
if {[catch {set atype [chansettype $attr]}]} {
         
putlog "Sorry but $attr is not a valid attribute"
         
return
      }
      if {
$atype ne "flag"} {
         
putlog "Sorry, $attr is not a flag attribute"
         
return
      }
      
set lchan {}
         foreach 
[::pltools::gethandlechans $handle $chan] {
         if {[
channel get $c $attr]==1} {
            
channel set $c -$attr
         
} else {
            
channel set $c +$attr
         
}
         
lappend lchan $c
      
}
      
putlog "$attr toggled on [join $lchan ""]"
   
}

   
# Toplu ayar özellikleri
   
proc mcset {handle idx text} {
      
set arg [::pltools::txt2list $text]
      
set chans {}
      
set attrname ""
      
set attrvals ""
      
for {set i 0} {$i<[llength $arg]} {incr i} {
         if {
$i==&& [string index [lindex $arg $i0eq "#"} {
            
set chans [::pltools::gethandlechans $handle [lindex $arg $i]]
            continue
         } elseif {
$i==&& [string index [lindex $arg $i0ne "#"} {
            
set chans [::pltools::gethandlechans $handle]
         }
         
set atype [::pltools::getatype [lindex $arg $i]]
         if {
$atype eq "unknow"} {
            
putlog "Unknow attribute: [lindex $arg $i] - Continue to next one"
            
continue
         } elseif {
$atype == "flag"} {
            foreach 
c $chans {
               
putlog "channel set $c [lindex $arg $i]"
               
channel set $c [lindex $arg $i]
            }
         } else {
            foreach 
c $chans {
               
putlog "channel set $c [lindex $arg $i] {*}[lindex $arg $i+1]"
               
channel set $c [lindex $arg $i] {*}[lindex $arg $i+1]
            }
            
incr i
         
}
      }
   }

   
# Dahili kullanım
   # returns type of an attribute or unknow
   
proc getatype {attr} {
      
set f [string index $attr 0]
      if {
$f=="+" || $f=="-"} {
         
set tmpattr [string range $attr 1 end]
      } else {
         
set tmpattr $attr
      
}
      if {[catch {
set atype [chansettype $tmpattr]}]} {
         return 
"unknow"
      
} else {
         return 
$atype
      
}
   }

   
# Belirli bir özniteliğe sahip kanalları döndürür
   
proc achannels {handle idx text} {
      
set achans {}
      
set chans [::pltools::gethandlechans $handle]
      if {
$text eq ""} {
         
putlog $chans
         
return
      } else {
         if {[::
pltools::getatype $textne "flag"} {
            
putlog "$text is not a valid channel flag"
            
return
         }
         foreach 
c $chans {
            if {[
channel get $c $text]} {
               
lappend achans $c
            
}
         }
         if {[
llength $achans]==0} {
            
putlog "No channel with $text flag enabled"
         
} else {
            
putlog "$text enabled on [join $achans ""]"
         
}
      }
   }

   
# bir tanıtıcıya ait kanalların listesini döndürür
   
proc gethandlechans {handle {channels ""}} {
      if {
$channels ne "" && [string index $channels 0eq "#"} {
         
set lchans [split $channels ","]
      } else {
         
set lchans [channels]
      }
      if {[
matchattr $handle +m]} {
         foreach 
c $lchans {
            if {[
validchan $c]} {
               
lappend validchans $c
            
}
         }
      } else {
         foreach 
c $lchans {
            if {[
validchan $c] && [matchattr $handle |+n $c]} {
               
lappend validchans $c
            
}
         }
      }
      return 
$validchans
   
}

   
# iç kullanım
   # Metni listeye dönüştürmek için kısa yardımcı programlar
   
proc txt2list {text} {
      
set rlist {}
      
set tmp {}
      foreach 
[split $text " "] {
         if {[
llength $tmp]==&& [string index $e 0ne "\{"} {
            
lappend rlist $e
         
} elseif {[string index $e endne "\}"} {
            
lappend tmp $e
         
} else {
            
lappend tmp $e
            lappend rlist 
[join $tmp " "]
            
set tmp {}
         }
      }
      return 
$rlist
   
}

   
bind dcc getattr ::pltools::getattr
   bind dcc 
toggle ::pltools::toggle
   bind dcc 
mcset ::pltools::mcset
   bind dcc 
achannels ::pltools::achannels

   putlog 
"IUCTools v${::pltools::version} by ${::pltools::author} Yüklendi"



SNOOPY 05 Aralık 2025 00:09

Cevap: IUCtools tcl kanal programları tclsi
 
Çok marjinal bir çalışma olmuş ama bence çoğaltılabilir seçenekler

IUC 05 Aralık 2025 00:48

Cevap: IUCtools tcl kanal programları tclsi
 
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ya işte paldır küldür kod bu kadar oluyor gerisini siz halledersiniz temeli benden geliştirmesi sizden

Dedecan61 05 Aralık 2025 11:12

Cevap: IUCtools tcl kanal programları tclsi
 
Gayet güzel eline sağlık üstat başarılar..


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

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk