########################################## # Triggers.tcl by KuNgFo0 (www.eggfaq.com) #VERSION 0.4 #DESCRIPTION Maintains a list of triggers available and active for the set channels. # Set the next line as the file to use to store the trigger info set triggers_file "trigger.data" # Set the next line as the command you want to display the triggers set triggers_command "!triggers" # Set the next line as the flag required to add triggers set triggers_flag "o" # Set the next line as the channels you want to run in set triggers_chans "#testchannel1 #testchannel2" proc xindex {xr xr1} { return [join [lrange [split $xr] $xr1 $xr1]] } proc pub_triggers {nick uhost hand chan arg} { global triggers_command triggers_flag triggers_chans triggers_list if {([lsearch -exact [string tolower $triggers_chans] [string tolower $chan]] != -1) || ($triggers_chans == "*")} { if {($arg != "") && ([matchattr $hand $triggers_flag])} { switch -exact -- [string tolower [xindex $arg 0]] { "add" { if {([set triggers_hand [xindex $arg 1]] == "") || ([set triggers_name [xindex $arg 2]] == "")} { puthelp "PRIVMSG $nick :Usage: $triggers_command add " } \ elseif {![validuser $triggers_hand]} { puthelp "PRIVMSG $nick :Error: Handle $triggers_hand does not exist" } \ elseif {[set i [lsearch -exact [string tolower $triggers_list] [string tolower [set triggers_entry [list $triggers_hand $triggers_name]]]]] != -1} { puthelp "PRIVMSG $nick :Error: [join $triggers_entry] already exists" } \ else { lappend triggers_list $triggers_entry puthelp "PRIVMSG $nick :Trigger [join $triggers_entry] added" triggers_save $nick } } "remove" { if {([set triggers_hand [xindex $arg 1]] == "") || ([set triggers_name [xindex $arg 2]] == "")} { puthelp "PRIVMSG $nick :Usage: $triggers_command remove " } \ elseif {[set i [lsearch -exact [string tolower $triggers_list] [string tolower [set triggers_entry [list $triggers_hand $triggers_name]]]]] == -1} { puthelp "PRIVMSG $nick :Error: [join $triggers_entry] does not exist" } \ else { set triggers_list [lreplace $triggers_list $i $i] puthelp "PRIVMSG $nick :Trigger [join $triggers_entry] removed" triggers_save $nick } } "list" { triggers_send $nick $chan 1 } default { puthelp "PRIVMSG $nick :Usage:" puthelp "PRIVMSG $nick : $triggers_command add " puthelp "PRIVMSG $nick : $triggers_command remove " puthelp "PRIVMSG $nick : $triggers_command list" } } } else { triggers_send $nick $chan 0 } } } proc triggers_send {target chan type} { global triggers_list if {$type} { puthelp "PRIVMSG $target :Triggers:" } \ else { puthelp "PRIVMSG $target :Triggers currently active on $chan:" } foreach triggers_entry $triggers_list { set nick [hand2nick [set hand [lindex $triggers_entry 0]] $chan] set trigger [lindex $triggers_entry 1] if {$type} { # Type == 1, list all triggers, not just active ones if {[onchan $nick $chan]} { set tail "(Active nick: $nick)" } \ else { set tail "(Unactive)" } puthelp "PRIVMSG $target :$hand -> $trigger $tail" } elseif {[onchan $nick $chan]} { puthelp "PRIVMSG $target :$nick -> $trigger" } } puthelp "PRIVMSG $target :End of list" } proc triggers_save {nick} { global triggers_file triggers_list if {[catch {open $triggers_file w} fileid]} { puthelp "PRIVMSG $nick :Error: Could not save settings to $triggers_file" putlog "Trigger Error: Could not save settings to $triggers_file" } else { puts $fileid [join $triggers_list \n] ; close $fileid } } proc triggers_load {} { global triggers_file triggers_list if {[file exists $triggers_file]} { if {[catch {open $triggers_file r} fileid]} { putlog "Trigger Error: Could not load settings from $triggers_file" } \ else { set triggers_list [split [read $fileid] \n] ; close $fileid } } else { set triggers_list "" } } bind pub - $triggers_command pub_triggers triggers_load putlog "*** Trigger.tcl 0.4 by KuNgFo0 loaded"