namespace eval ::cybex:: { variable packages if [info exist packages] then { lappend packages statuslog } else { set packages [list statuslog] } } namespace eval ::cybex::statuslog:: { variable script [info script] variable trigger sl proc reload args { variable script uplevel 0 source $script putcmdlog "[namespace current] reloaded" } bind dcc n ${trigger}reload [namespace current]::reload bind dcc n ${trigger}test [list [namespace current]::time 30] setudef flag statuslog2 setudef flag statuslog2.onchange setudef int statuslog2.repeat foreach ch [channels] { if {[channel get $ch statuslog2.repeat]==0} {channel set $ch statuslog2.repeat 15} } proc time args { set min [string trimleft [lindex $args 0] 0]; if {$min==""} {set min 0} foreach ch [channels] { if {[channel get $ch statuslog2] && [channel get $ch statuslog2.onchange] && [expr {$min % [channel get $ch statuslog2.repeat]}]==0} { log $ch } if {![channel get $ch statuslog2] || [channel get $ch statuslog2.onchange] || [expr {$min % [channel get $ch statuslog2.repeat]}]!=0} { continue } { log $ch } } } bind time - * [namespace current]::time proc log ch { set post "" if {[botisop $ch]} {set text @} elseif {[botisvoice $ch]} {set text +} else {set text ""} append text $ch append text " ([getchanmode $ch]) : " set glb(Init) 1; set chn(Init) 1 foreach u [chanlist $ch] { if {[info exists chn(Total)]} {incr chn(Total)} {set chn(Total) 1} if [isop $u $ch] {if {[info exists chn(Op)]} {incr chn(Op)} {set chn(Op) 1}} if [isvoice $u $ch] {if {[info exists chn(Voice)]} {incr chn(Voice)} {set chn(Voice) 1}} set h [nick2hand $u] if {$h!="*"} { foreach char [split "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ""] { if {[matchattr $h $char]} { if {[info exists glb($char)]} {incr glb($char)} {set glb($char) 1} } elseif {[matchattr $h |$char $ch]} { if {[info exists chn($char)]} {incr chn($char)} {set chn($char) 1} } } # foreach char } # if $h!=* } set post ""; set lchn ""; set lglb "" if {[info exists [namespace current]::globlist($ch)]} {set x [subst -nocomm -noback $[namespace current]::globlist($ch)]; array set tglb $x} if {[info exists [namespace current]::chanlist($ch)]} {set x [subst -nocomm -noback $[namespace current]::chanlist($ch)]; array set tchn $x} set save 0 if {[channel get $ch statuslog2.onchange]} { if {[info exists chn(Total)]} { if {[info exists tchn(Total)]} { if {$tchn(Total)!=$chn(Total)} {lappend post "Total:$tchn(Total)>$chn(Total)"; set save 1} } {lappend post "Total:$chn(Total) "; set save 1} } } elseif {[info exists chn(Total)]} { lappend post "Total:$chn(Total) "; set save 1 } if {[channel get $ch statuslog2.onchange]} { if {[info exists chn(Op)]} { if {[info exists tchn(Op)]} { if {$tchn(Op)!=$chn(Op)} {lappend post "Op:$tchn(Op)>$chn(Op)"; set save 1} } {lappend post "Op:$chn(Op) "; set save 1} } } elseif {[info exists chn(Op)]} { lappend post "Op:$chn(Op) "; set save 1 } if {[channel get $ch statuslog2.onchange]} { if {[info exists chn(Voice)]} { if {[info exists tchn(Voice)]} { if {$tchn(Voice)!=$chn(Voice)} {lappend post "Voice:$tchn(Voice)>$chn(Voice)"; set save 1} } {lappend post "Voice:$chn(Voice) "; set save 1} } } elseif {[info exists chn(Voice)]} { lappend post "Voice:$chn(Voice) "; set save 1 } foreach char [split "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ""] { if {[channel get $ch statuslog2.onchange]} { if {[info exists chn($char)]} { if {[info exists tchn($char)]} { if {$tchn($char)!=$chn($char)} {lappend lchn "$char:$tchn($char)>$chn($char)"; set save 1} } {lappend lchn "$char:$chn($char) "; set save 1} } } elseif {[info exists chn($char)]} { lappend lchn "$char:$chn($char) "; set save 1 } if {[channel get $ch statuslog2.onchange]} { if {[info exists glb($char)]} { if {[info exists tglb($char)]} { if {$tglb($char)!=$glb($char)} {lappend lglb "$char:$tglb($char)>$glb($char)"; set save 1} } {lappend lglb "$char:$glb($char) "; set save 1} } } elseif {[info exists glb($char)]} { lappend lglb "$char:$glb($char) "; set save 1 } } if $save { set [namespace current]::globlist($ch) [array get glb] set [namespace current]::chanlist($ch) [array get chn] } set out 0 if {$post!=""} { append text [join $post ", "] set out 1 } if {$lglb!=""} { append text " Glob: [join $lglb ", "]" set out 1 } if {$lchn!=""} { append text " Chan: [join $lchn ", "]" set out 1 } if $out {putcmdlog $text} return $text } }