Voici ce que ça peut donner, sans optimisation:
tcl
###################################
########### Liste users ###########
###################################
set canal "#accueil"
set fichier "/home/loulou/public_html/liste.html"
bind join - "$canal *" list:join
bind part - "$canal *" list:part
bind sign - "$canal *" list:quit
proc list:join {nick uhost handle chan} { list:log; }
proc list:part {nick uhost handle chan text} {
if {$nick != $::botnick} { list:log; }
}
proc list:quit {nick uhost handle chan text} {
if {$nick != $::botnick} { list:log; }
}
set u(op) {}
set u(hop) {}
set u(vop) {}
set u(nop) {}
proc list:log {} {
foreach cnick [chanlist $::canal] {
if { $cnick == $::botnick } { continue; }
if { [isop $cnick $::canal] == 1 } {
lappend ::u(op) $cnick
} elseif { [ishalfop $cnick $::canal] == 1 } {
lappend ::u(hop) $cnick
} elseif { [isvoice $cnick $::canal] == 1 } {
lappend ::u(vop) $cnick
} else {
lappend ::v(op) $cnick
}
}
save:log
}
proc save:log {} {
set fp [open $::fichier w]
foreach nick $::u(op) {
puts $fp "<span style='font-color:red;'>@$nick</span><br />"
}
foreach nick $::u(hop) {
puts $fp "<span style='font-color:blue;'>%$nick</span><br />"
}
foreach nick $::u(vop) {
puts $fp "<span style='font-color:yellow;'>+$nick</span><br />"
}
foreach nick $::u(nop) {
puts $fp "<span style='font-color:green;'>$nick</span><br />"
}
close $fp
}
##########
# Putlog #
##########
#
putlog "nick list par CrazyCat"