rendered paste bodyset cmdsfile "scripts/cmds.txt"
if {![file exists $cmdsfile]} {
set fileid [open $cmdsfile w]
close $fileid
} {
source $cmdsfile
}
set allcommands [list]
foreach donecmd [split [read [set fileid [open $cmdsfile]]][close $fileid] \n][unset fileid] {
if {[string match -nocase "bind pub - *" $donecmd]} {
lappend allcommands [lindex [split $donecmd] 3]
}
}
bind pub n .bind add:command
bind pub -|- .binds count:command
bind pub n .unbind del:command
proc add:command {n u h c a} {
global addedcommands
set command [string tolower [lindex [split $a] 0]]
set action [join [lrange [split $a] 1 end]]
if {[info command added:$command] == ""} {
set addedcommands($command) $action
proc added:$command {n u h c a} {
global addedcommands
puthelp "privmsg $c : [string map [list %nick [lindex [split $a] 0]] $addedcommands($::lastbind)]"
}
bind pub - $command added:$command
save:command $command $action
puthelp "notice $n :Added add:$command command."
} {
puthelp "notice $n :Command added:$command already exists."
}
}
proc count:command {n u h c a} {
global allcommands
if {[llength $allcommands]} {
puthelp "privmsg $c :Available commands: [join $allcommands]"
} {
puthelp "privmsg $c :No commands available."
}
}
proc del:command {n u h c a} {
global allcommands
set cmd [string tolower [lindex [split $a] 0]]
if {![catch {unbind pub - $cmd added:$cmd}]} {
if {[set i [lsearch $allcommands -exact $cmd]] != -1} {
set allcommands [lreplace $allcommands $i $i]
}
puthelp "notice $n :Successfully remove \002$cmd\002 PUB command."
} {
puthelp "notice $n :Command \002$cmd\002 does not exist."
}
}
proc save:command {c act} {
global cmdsfile
set c [string map {\[ \\\[ \] \\\] \\ \\\\} $c]
set cmdlist [split [read [set f [open $cmdsfile]]] \n][close $f]
lappend cmdlist "bind pub - $c added:$c"
lappend cmdlist ""
lappend cmdlist "set addedcommands($c) [list $act]"
lappend cmdlist ""
set f [open $cmdsfile w]
foreach cmd $cmdlist {
puts $f $cmd
}
puts $f [printproc added:$c]
close $f
}
# user's proc from the Tcl faq forum
proc printproc proc {
set args {}
foreach arg [info args $proc] {
if {[info default $proc $arg val]} {
lappend args [list $arg $val]
} {
lappend args [list $arg]
}
}
list proc $proc $args [info body $proc]
}
putlog "Commands.tcl has loaded successfully."