TCL Flag Note
TCL
Download (.zip)
# Flagnote by Ernst # Usage: .flagnote <flag> [#channel/all] <message>
set globalflags "a c d f h j k m n o p q t u v x" set chanflags "a d f k m n o q v" set botflags "b"
set customflags "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
bind dcc m|m flagnote dcc_flagnote proc dcc_flagnote {hand idx arg} { global customflags globalflags chanflags botflags set whichflag [lindex $arg 0] if {[string index [lindex $arg 1] 0] == "#"} { set toglobal 0 set tochannel 1 set channel "[lindex $arg 1]" if {![validchan $channel]} { putdcc $idx "I am not monitoring channel $channel, sorry." return 0 } set message [lrange $arg 2 end] } elseif {[string tolower [lindex $arg 1]] == "all"} { set toglobal 1 set tochannel 1 set channel "[channels]" set message [lrange $arg 2 end] } { set toglobal 1 set tochannel 0 set channel "" set message [lrange $arg 1 end] } if {$whichflag == "" || $message == ""} { putdcc $idx "Usage: flagnote <\[+\]flag> \[#channel/all\] <message>" putdcc $idx " Sends <message> to users with given channel or global flag." putdcc $idx " If '#channel' is specified, message goes to users with channel" putdcc $idx " <flag> for channel #channel. If 'all' is specified, message" putdcc $idx " goes for users with either any channel or global <flag>." putdcc $idx " Otherwise message will go only to users with global <flag>." putdcc $idx " A '%nick' in message to be replaced with destination handle." return 0 } if {[string index $whichflag 0] == "+"} { set whichflag [string index $whichflag 1] } if {([lsearch -exact $botflags $whichflag] > 0)} { putdcc $idx "The flag \[\002$whichflag\002\] is for bots only." putdcc $idx "Valid flags are (choose one):" putdcc $idx "\002[lsort $globalflags]\002 and any uppercase letter" return 0 } if {[lsearch -exact [concat $globalflags $customflags] $whichflag] < 0} { putdcc $idx "The flag \[\002$whichflag\002\] is not a defined flag." putdcc $idx "Valid flags are (choose one):" putdcc $idx " \002[lsort $globalflags]\002 and any uppercase letter" return 0 } if {$tochannel && $toglobal} { putcmdlog "#$hand# flagnote \[+$whichflag\] all ..." putdcc $idx "*** Sending FlagNote to all \[\002$whichflag\002\] users." set channel [channels] } elseif {$tochannel && !$toglobal} { putcmdlog "#$hand# flagnote \[+$whichflag $channel\] ..." putdcc $idx "*** Sending FlagNote to all \[\002$whichflag\002\] users ($channel)." } { putcmdlog "#$hand# flagnote \[+$whichflag\] ..." putdcc $idx "*** Sending FlagNote to all global \[\002$whichflag\002\] users." } if {[lsearch -exact [concat $chanflags $customflags] $whichflag] < 0 && $tochannel} { putdcc $idx "*** \[\002$whichflag\002\] is a global only flag." } set message "\[\002$whichflag\002\]\ $message" set notes 0 set badnotes 0 set badusers "" foreach user [userlist] { if {![matchattr $user b] && $user != $hand} { if {[matchattr $user $whichflag] && $toglobal} { regsub -all "%nick" $message "$user" tmpmessage set fwdaddy [getuser $user fwd] if {$fwdaddy == ""} { set ok [sendnote $hand $user $tmpmessage] if {$ok == 3 || $ok == 0} { incr badnotes lappend badusers $user } { incr notes } continue } else { set ok [sendnote $hand $fwdaddy $tmpmessage] if {$ok == 3 || $ok == 0} { incr badnotes lappend badusers $user } { incr notes } continue} } if {$tochannel} { foreach thischan $channel { if {[matchattr $user -|$whichflag $thischan]} { regsub -all "%nick" $message "$user" tmpmessage set fwdaddy [getuser $user fwd] if {$fwdaddy == ""} { set ok [sendnote $hand $user $tmpmessage] # 3 is never returned as it should, this is a bug in 1.3.2 if {$ok == 3 || $ok == 0} { incr badnotes lappend badusers $user } { incr notes } break } else { set ok [sendnote $hand $fwdaddy $tmpmessage] # 3 is never returned as it should, this is a bug in 1.3.2 if {$ok == 3 || $ok == 0} { incr badnotes lappend badusers $user } { incr notes } break} } } } } } if {$notes == 1} {set notes "1 note was"} {set notes "$notes notes were"} putdcc $idx "*** Done... $notes send." if {$badnotes} { if {$badnotes == 1} {set badnotes "1 note was"} {set badnotes "$badnotes notes were"} putdcc $idx "*** $badnotes not delivered: $badusers" } }
|