Looking for a script that can do a todo/task list. Maybe also with a "claim task" function.
The main need would be:
!todo (list all tasks that needs to be done with an ID(number))
!todo add <some task thats need to be done>
!todo del # (ID)
!todo complete # (ID)
Maybe as an extra function:
!todo claim # (ID)
This would then add (username) at the end of the task so when doing !todo it shows that (username) is working on the specific task.
# EditTextFile (ToDo-List ver) Version 0.4 #
# author: SpiKe^^ #
# e-mail: spike<at>mytclscripts<dot>com #
# webpage: http://mytclscripts.com/ #
# This file is Copyrighted under the GNU Public License. #
# http://www.gnu.org/copyleft/gpl.html #
########### General Script Settings ###########
# Set the channel(s) for this script to run in #
set eTxFile(chan) {#anotherchannel #someotherchan}
# Set the full route & file name of the ToDo-List file #
set eTxFile(file) {/home/eggdrop/scripts/todo.txt}
# Set the access flags to use the ToDo-List public commands #
set eTxFile(flags) {o|o}
########### Public Command Trigger ###########
# Set the public trigger for all the ToDo-List commands #
# note: All ToDo-List commands start with this one word!
set eTxFile(cmd) {!todo}
########### Public Command Options ###########
# Set the command option for the add line command #
# to add a line at the end of the file:
# example: !todo add The text to add at file end.
# example: !todo add end The text to add at file end.
# to add a line at a specific line position in the file:
# example: !todo add 4 The text to add at file line 4.
# note: this will renumber the original line 4 & all lines after it!
set eTxFile(add) {add}
# Set the command option for the delete line command #
# to delete a specific line (by line number) from the text file
# example: !todo del 4
# note: this will renumber all lines after line 4!
set eTxFile(del) {del}
# Set the command option for the list file command #
# to list all lines from the text file
# example: !todo list
# note: list is also the default if no command option is given!
# example: !todo
set eTxFile(list) {list}
########### Extended Command Options ###########
# Set the command option for the read line command #
# to read a specific line (by line number) from the text file
# example: !todo read 4
# note: use to check for correct line before doing !todo del or edit
set eTxFile(read) {read}
# Set the command option for the edit line command #
# to edit a specific line (by line number) in the text file
# example: !todo edit 4 New text to replace file line 4.
set eTxFile(edit) {edit}
# Set the command option to get help with this script #
# to see all valid ToDo-List command options
# example: !todo help
set eTxFile(help) {help}
################ End Settings ################
bind pub $eTxFile(flags) $eTxFile(cmd) etfProcCmd
set eTxFile(chan) [split $eTxFile(chan)]
proc etfProcCmd {nk uh hn ch tx} {
global eTxFile
if {[lsearch -nocase $eTxFile(chan) $ch]=="-1"} { return 0 }
set tx [split [string trim $tx]]
set opt [lindex $tx 0]
set tx [string trim [join [lrange $tx 1 end]]]
if {$opt eq $eTxFile(add)} {
etfProcAdd $nk $ch $tx
} elseif {$opt eq $eTxFile(del)} {
etfProcEdit $nk $ch $tx del
} elseif {$opt eq "" || $opt eq $eTxFile(list)} {
etfProcRead $nk $ch $tx file
} elseif {$opt eq $eTxFile(read)} {
etfProcRead $nk $ch $tx
} elseif {$opt eq $eTxFile(edit)} {
etfProcEdit $nk $ch $tx
} else {
if {$opt eq $eTxFile(help)} {
puthelp "PRIVMSG $ch :--- ToDo-List script help ---"
} else {
puthelp "PRIVMSG $ch :Invalid ToDo-List command option: $opt"
}
puthelp "PRIVMSG $ch :Valid options for $eTxFile(cmd): \
$eTxFile(add), $eTxFile(del), $eTxFile(list),\
$eTxFile(read), $eTxFile(edit), $eTxFile(help)"
puthelp "PRIVMSG $ch :To get help for an option, use it without arguments."
puthelp "PRIVMSG $ch :Example: $eTxFile(cmd) $eTxFile(add)"
puthelp "PRIVMSG $ch :Example: $eTxFile(cmd) $eTxFile(del)"
}
return 0
}
proc etfProcAdd {nk ch tx} {
set tx [split $tx]
if {[lindex $tx 0] eq "end" || [string is digit -strict [lindex $tx 0]]} {
set addat [lindex $tx 0] ; set tx [string trim [join [lrange $tx 1 end]]]
} else { set addat end ; set tx [join $tx] }
if {$tx eq ""} { set add "$::eTxFile(cmd) $::eTxFile(add)"
puthelp "PRIVMSG $ch :Correct syntax is: $add \[position\] <text to add>"
puthelp "PRIVMSG $ch :Example: $add Text to add at end of the list."
puthelp "PRIVMSG $ch :Example: $add end Text to add at end of the list."
puthelp "PRIVMSG $ch :Example: $add 4 Text to add at list line 4."
return
}
set tf $::eTxFile(file)
if {![file exists $tf]} { set addat end ; set nofile 1 }
if {$addat ne "end"} { set tx "$addat $tx"
etfProcEdit $nk $ch $tx add ; return
}
set id [open $tf a] ; puts $id $tx ; close $id
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :Unable to find or make ToDo text file: $tf"
} elseif {[info exists nofile]} {
puthelp "PRIVMSG $ch :Added line to new ToDo-List: $tx"
} else {
puthelp "PRIVMSG $ch :Added line at end of ToDo-List: $tx"
}
return
}
proc etfProcRead {nk ch tx {do line} } {
set tf $::eTxFile(file)
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
if {$do eq "line" && ![string is digit -strict $tx]} {
set read "$::eTxFile(cmd) $::eTxFile(read)"
puthelp "PRIVMSG $ch :Correct syntax is: $read <line#>"
puthelp "PRIVMSG $ch :Example: $read 4"
return
}
set tid [open $tf] ; set lnum 0
while {![eof $tid]} { set line [gets $tid]
if {$line ne ""} { incr lnum
if {$do eq "file"} { puthelp "PRIVMSG $ch :\[$lnum\] $line"
} elseif {$lnum==$tx} {
puthelp "PRIVMSG $ch :\[$lnum\] $line" ; break
}
}
}
close $tid
if {$lnum=="0"} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
if {$do eq "line" && $tx>$lnum} { set tl line
if {$lnum>"1"} { set tl lines }
puthelp "PRIVMSG $ch :List line $tx doesn't exist ($lnum $tl in the list)"
}
return
}
proc etfProcEdit {nk ch tx {do edit} } {
set tf $::eTxFile(file)
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
set tx [split $tx]
if {$do eq "edit"} {
if {[llength $tx]<"2" || ![string is digit -strict [lindex $tx 0]]} {
set edit "$::eTxFile(cmd) $::eTxFile(edit)"
puthelp "PRIVMSG $ch :Correct syntax is: $edit <line#> <new edited text>"
puthelp "PRIVMSG $ch :Example: $edit 4 New text to replace list line 4."
return
}
} elseif {$do eq "del" && ![string is digit -strict [lindex $tx 0]]} {
set del "$::eTxFile(cmd) $::eTxFile(del)"
puthelp "PRIVMSG $ch :Correct syntax is: $del <line#>"
puthelp "PRIVMSG $ch :Example: $del 4" ; return
}
set find [lindex $tx 0] ; set tx [string trim [join [lrange $tx 1 end]]]
set new [file dirname $tf]/newfile.tmp ; set nid [open $new w]
set tid [open $tf] ; set lnum 0
while {![eof $tid]} { set line [gets $tid]
if {$line ne ""} { incr lnum
if {$lnum==$find} {
if {$do eq "edit"} {
puthelp "PRIVMSG $ch :Replaced line $lnum text: $line"
puthelp "PRIVMSG $ch :with the new text line: $tx"
puts $nid $tx
} elseif {$do eq "del"} {
puthelp "PRIVMSG $ch :Deleted line $lnum text: $line"
} elseif {$do eq "add"} {
puthelp "PRIVMSG $ch :Added new line $lnum text: $tx"
puts $nid $tx ; puts $nid $line
}
} else { puts $nid $line }
}
}
close $tid
if {$find>$lnum} {
if {$do eq "add"} { incr lnum
puthelp "PRIVMSG $ch :Added new line $lnum text: $tx"
puts $nid $tx ; close $nid ; file rename -force $new $tf
} else {
if {$lnum>"0"} { set tl line
if {$lnum>"1"} { set tl lines }
puthelp "PRIVMSG $ch :List line $find doesn't exist ($lnum $tl in the list)"
} else { puthelp "PRIVMSG $ch :ToDo-List is currently empty." }
close $nid ; file delete $new
}
} else { close $nid ; file rename -force $new $tf }
return
}
putlog "EditTextFile (ToDo-List ver) Ver. 0.4 by SpiKe^^ loaded."
# EditTextFile (ToDo-List ver) Version 0.4 #
# author: SpiKe^^ #
# e-mail: spike<at>mytclscripts<dot>com #
# webpage: http://mytclscripts.com/ #
# This file is Copyrighted under the GNU Public License. #
# http://www.gnu.org/copyleft/gpl.html #
########### General Script Settings ###########
# Set the channel(s) for this script to run in #
set eTxFile(chan) {#anotherchannel #someotherchan}
# Set the full route & file name of the ToDo-List file #
set eTxFile(file) {/home/eggdrop/scripts/todo.txt}
# Set the access flags to use the ToDo-List public commands #
set eTxFile(flags) {o|o}
########### Public Command Trigger ###########
# Set the public trigger for all the ToDo-List commands #
# note: All ToDo-List commands start with this one word!
set eTxFile(cmd) {!todo}
########### Public Command Options ###########
# Set the command option for the add line command #
# to add a line at the end of the file:
# example: !todo add The text to add at file end.
# example: !todo add end The text to add at file end.
# to add a line at a specific line position in the file:
# example: !todo add 4 The text to add at file line 4.
# note: this will renumber the original line 4 & all lines after it!
set eTxFile(add) {add}
# Set the command option for the delete line command #
# to delete a specific line (by line number) from the text file
# example: !todo del 4
# note: this will renumber all lines after line 4!
set eTxFile(del) {del}
# Set the command option for the list file command #
# to list all lines from the text file
# example: !todo list
# note: list is also the default if no command option is given!
# example: !todo
set eTxFile(list) {list}
########### Extended Command Options ###########
# Set the command option for the read line command #
# to read a specific line (by line number) from the text file
# example: !todo read 4
# note: use to check for correct line before doing !todo del or edit
set eTxFile(read) {read}
# Set the command option for the edit line command #
# to edit a specific line (by line number) in the text file
# example: !todo edit 4 New text to replace file line 4.
set eTxFile(edit) {edit}
# Set the command option to get help with this script #
# to see all valid ToDo-List command options
# example: !todo help
set eTxFile(help) {help}
################ End Settings ################
bind pub $eTxFile(flags) $eTxFile(cmd) etfProcCmd
set eTxFile(chan) [split $eTxFile(chan)]
proc etfProcCmd {nk uh hn ch tx} {
global eTxFile
if {[lsearch -nocase $eTxFile(chan) $ch]=="-1"} { return 0 }
set tx [split [string trim $tx]]
set opt [lindex $tx 0]
set tx [string trim [join [lrange $tx 1 end]]]
if {$opt eq $eTxFile(add)} {
etfProcAdd $nk $ch $tx
} elseif {$opt eq $eTxFile(del)} {
etfProcEdit $nk $ch $tx del
} elseif {$opt eq "" || $opt eq $eTxFile(list)} {
etfProcRead $nk $ch $tx file
} elseif {$opt eq $eTxFile(read)} {
etfProcRead $nk $ch $tx
} elseif {$opt eq $eTxFile(edit)} {
etfProcEdit $nk $ch $tx
} else {
if {$opt eq $eTxFile(help)} {
puthelp "PRIVMSG $ch :--- ToDo-List script help ---"
} else {
puthelp "PRIVMSG $ch :Invalid ToDo-List command option: $opt"
}
puthelp "PRIVMSG $ch :Valid options for $eTxFile(cmd): \
$eTxFile(add), $eTxFile(del), $eTxFile(list),\
$eTxFile(read), $eTxFile(edit), $eTxFile(help)"
puthelp "PRIVMSG $ch :To get help for an option, use it without arguments."
puthelp "PRIVMSG $ch :Example: $eTxFile(cmd) $eTxFile(add)"
puthelp "PRIVMSG $ch :Example: $eTxFile(cmd) $eTxFile(del)"
}
return 0
}
proc etfProcAdd {nk ch tx} {
set tx [split $tx]
if {[lindex $tx 0] eq "end" || [string is digit -strict [lindex $tx 0]]} {
set addat [lindex $tx 0] ; set tx [string trim [join [lrange $tx 1 end]]]
} else { set addat end ; set tx [join $tx] }
if {$tx eq ""} { set add "$::eTxFile(cmd) $::eTxFile(add)"
puthelp "PRIVMSG $ch :Correct syntax is: $add \[position\] <text to add>"
puthelp "PRIVMSG $ch :Example: $add Text to add at end of the list."
puthelp "PRIVMSG $ch :Example: $add end Text to add at end of the list."
puthelp "PRIVMSG $ch :Example: $add 4 Text to add at list line 4."
return
}
set tf $::eTxFile(file)
if {![file exists $tf]} { set addat end ; set nofile 1 }
if {$addat ne "end"} { set tx "$addat $tx"
etfProcEdit $nk $ch $tx add ; return
}
set id [open $tf a] ; puts $id $tx ; close $id
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :Unable to find or make ToDo text file: $tf"
} elseif {[info exists nofile]} {
puthelp "PRIVMSG $ch :Added line to new ToDo-List: $tx"
} else {
puthelp "PRIVMSG $ch :Added line at end of ToDo-List: $tx"
}
return
}
proc etfProcRead {nk ch tx {do line} } {
set tf $::eTxFile(file)
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
if {$do eq "line" && ![string is digit -strict $tx]} {
set read "$::eTxFile(cmd) $::eTxFile(read)"
puthelp "PRIVMSG $ch :Correct syntax is: $read <line#>"
puthelp "PRIVMSG $ch :Example: $read 4"
return
}
set tid [open $tf] ; set lnum 0
while {![eof $tid]} { set line [gets $tid]
if {$line ne ""} { incr lnum
if {$do eq "file"} { puthelp "PRIVMSG $ch :\[$lnum\] $line"
} elseif {$lnum==$tx} {
puthelp "PRIVMSG $ch :\[$lnum\] $line" ; break
}
}
}
close $tid
if {$lnum=="0"} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
if {$do eq "line" && $tx>$lnum} { set tl line
if {$lnum>"1"} { set tl lines }
puthelp "PRIVMSG $ch :List line $tx doesn't exist ($lnum $tl in the list)"
}
return
}
proc etfProcEdit {nk ch tx {do edit} } {
set tf $::eTxFile(file)
if {![file exists $tf]} {
puthelp "PRIVMSG $ch :ToDo-List is currently empty." ; return
}
set tx [split $tx]
if {$do eq "edit"} {
if {[llength $tx]<"2" || ![string is digit -strict [lindex $tx 0]]} {
set edit "$::eTxFile(cmd) $::eTxFile(edit)"
puthelp "PRIVMSG $ch :Correct syntax is: $edit <line#> <new edited text>"
puthelp "PRIVMSG $ch :Example: $edit 4 New text to replace list line 4."
return
}
} elseif {$do eq "del" && ![string is digit -strict [lindex $tx 0]]} {
set del "$::eTxFile(cmd) $::eTxFile(del)"
puthelp "PRIVMSG $ch :Correct syntax is: $del <line#>"
puthelp "PRIVMSG $ch :Example: $del 4" ; return
}
set find [lindex $tx 0] ; set tx [string trim [join [lrange $tx 1 end]]]
set new [file dirname $tf]/newfile.tmp ; set nid [open $new w]
set tid [open $tf] ; set lnum 0
while {![eof $tid]} { set line [gets $tid]
if {$line ne ""} { incr lnum
if {$lnum==$find} {
if {$do eq "edit"} {
puthelp "PRIVMSG $ch :Replaced line $lnum text: $line"
puthelp "PRIVMSG $ch :with the new text line: $tx"
puts $nid $tx
} elseif {$do eq "del"} {
puthelp "PRIVMSG $ch :Deleted line $lnum text: $line"
} elseif {$do eq "add"} {
puthelp "PRIVMSG $ch :Added new line $lnum text: $tx"
puts $nid $tx ; puts $nid $line
}
} else { puts $nid $line }
}
}
close $tid
if {$find>$lnum} {
if {$do eq "add"} { incr lnum
puthelp "PRIVMSG $ch :Added new line $lnum text: $tx"
puts $nid $tx ; close $nid ; file rename -force $new $tf
} else {
if {$lnum>"0"} { set tl line
if {$lnum>"1"} { set tl lines }
puthelp "PRIVMSG $ch :List line $find doesn't exist ($lnum $tl in the list)"
} else { puthelp "PRIVMSG $ch :ToDo-List is currently empty." }
close $nid ; file delete $new
}
} else { close $nid ; file rename -force $new $tf }
return
}
putlog "EditTextFile (ToDo-List ver) Ver. 0.4 by SpiKe^^ loaded."