All pastes #286972 Raw Edit

7 moi

public text v1 · immutable
#286972 ·published 2006-12-21 01:13 UTC
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"