rendered paste body##########################################
# 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 <handle-of-user> <trigger>" } \
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 <handle-of-user> <trigger>" } \
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 <handle-of-user> <trigger>"
puthelp "PRIVMSG $nick : $triggers_command remove <handle-of-user> <trigger>"
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"