Code Library
Home Submit Free Hosting Link To Us Contacts

TCL Flag Note

TCL Flag Note TCL TCL Flag Note 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"
        }
}




  • TCLFlag Note


Tatet