#----------------------------------------------------------
# NickPlus by phil - Version 1.0 (First public release)
# See it in action at treochat.net
# *uses a PHP script to display and format
#
# Writes the current nicklist to a file to be used in other
# scripts or displayed on a web page. Supports the nick
# prefixes ~, &, @, %, and + (common to UnrealIRCDs).
#
#-----------------------------------------------------------
set ver "1.0"
# Change dumpfile to the path where you'd like the file to be written.
set dumpfile "/var/www/list.txt"
# Change channel to the channel whos nicklist you'd like to write.
set channel "#ringerike"
# You may remove these binds if you'd like to only use the 5 minute timer
bind sign - "$channel %" nickplus:sendnames
bind part - "$channel %" nickplus:sendnames
bind splt - "$channel %" nickplus:sendnames
bind join - "$channel %" nickplus:sendnames
bind kick - "$channel %" nickplus:sendnames
bind nick - "$channel %" nickplus:sendnames
bind mode - "$channel %" nickplus:sendnames
# Leave the rest well enough alone :)
bind raw - "353" nickplus:make
proc nickplus:sendnames {args} {
global channel
putserv "NAMES $channel"
}
proc nickplus:make {from keyword argz} {
global dumpfile channel botnick
set nicklist [split [lindex [split [string trim $argz] ":"] 1] " "]
set masterlist ""
set flist ""
set plist ""
set olist ""
set hlist ""
set vlist ""
set rlist ""
foreach user $nicklist {
if {[string first "~" $user] == 0} {
lappend flist $user
} elseif {[string first "&" $user] == 0} {
lappend plist $user
} elseif {[string first "@" $user] == 0} {
lappend olist $user
} elseif {[string first "%" $user] == 0} {
lappend hlist $user
} elseif {[string first "+" $user] == 0} {
lappend vlist $user
} else {
lappend rlist $user
}
}
set flist [lsort -dictionary $flist]
set plist [lsort -dictionary $plist]
set olist [lsort -dictionary $olist]
set hlist [lsort -dictionary $hlist]
set vlist [lsort -dictionary $vlist]
set rlist [lsort -dictionary $rlist]
foreach user $flist {
lappend masterlist $user
}
foreach user $plist {
lappend masterlist $user
}
foreach user $olist {
lappend masterlist $user
}
foreach user $hlist {
lappend masterlist $user
}
foreach user $vlist {
lappend masterlist $user
}
foreach user $rlist {
lappend masterlist $user
}
set outputfile [open $dumpfile w]
foreach user $masterlist {
puts $outputfile $user
}
close $outputfile
putlog "NickPlus : Written"
return 1
}
if {![info exists nickplus_running]} {
timer 300 nickplus:sendnames
set nickplus_running 1
}
nickplus:sendnames
putlog "NickPlus : Loaded"