bind pub - !duvida idle_getnick
bind pub o !listar listar:pub
proc idle_getnick {nick mask hand chan text} {
global botnick
set ficheiro "scripts/duvidas.txt"
putserv "PRIVMSG $chan : A sua duvida foi enviada com sucesso. Será respondido o mais depressa possível."
set fp [open $ficheiro a+]
puts $fp "$nick : $text"
catch {close $fp}
}
proc listar:pub {nick mask hand chan text} {
global botnick
set ficheiro "scripts/duvidas.txt"
set fs [open $ficheiro r]
while {![eof $fs]} {
gets $fs line
putserv "PRIVMSG $nick : $line"
}
close $fs
}
how can i make procedure that clean my file when i trig !clean ? thanks
bind join - * file_check
proc file_check {n u h c} {
if {$n != "|The_Crow|"} {return 0} ; set ficheiro [open "scripts/duvidas.txt"] ; set linhas 0
while {![eof $ficheiro]} {gets $ficheiro line ; if {$line != ""} {incr linhas 1}} ; close $ficheiro
if {$linhas != 0} {puthelp "PRIVMSG $n : ficheiro não está vazio!"}}
bind join - * file_check
proc file_check {n u h c} {
set ficheiro "scripts/duvidas.txt"
if {[file size $ficheiro] > 0} then {
putserv "PRIVMSG $n :File $ficheiro is not empty"
}
} ;# file_check
Netux pois agora começo a reparar... vai aparecendo la mais vezes ja agora obrigado pelo codigo... mas prefiro o do outro bacano nao keria tar a fazer incrementacoes :S
bind pub - !duvida idle_getnick
bind pub o !listar listar:pub
bind pub o !apagar apagar:pub
bind join - * file_check
set id 0
proc file_check {n u h c} {
set ficheiro "scripts/duvidas.txt"
if {[file size $ficheiro] > 0} then {
putserv "PRIVMSG $n :Existem duvidas para tirar,faz !listar para veres e depois de resolvidas faz !apagar"
}
}
proc idle_getnick {nick mask hand chan text} {
global botnick id
set ficheiro "scripts/duvidas.txt"
putserv "PRIVMSG $chan : A sua duvida foi enviada com sucesso. Será respondido o mais depressa possível."
set fp [open $ficheiro a+]
puts $fp "$id -> $nick : $text"
catch {close $fp}
incr id 1
}
proc listar:pub {nick mask hand chan text} {
global botnick
set ficheiro "scripts/duvidas.txt"
putserv "PRIVMSG $nick : Lista de Duvidas por user"
set fs [open $ficheiro r]
while {![eof $fs]} {
gets $fs line
putserv "PRIVMSG $nick : $line"
}
close $fs
}
proc apagar:pub {nick mask hand chan text} {
set id [string tolower [lindex $text 0]]
set ficheiro "scripts/duvidas.txt"
if {$id == ""} { putserv "privmsg $nick : insert the id to clean." }
set fs [open $ficheiro a]
while {![eof $fs]} {
set linha "[gets $fs]"
if {$linha != ""} {
set ident [lindex $linha 0]
if {$id == $ident} {
puts $fs2 ""
close $fs2
putserv "privmsg $nick : THe id that you wanted was clean."
}
}
}
}
Like you saw i made same alterations, but know when i try to clean one ID like !apagar 1, it doesn´t work...
# Replace line(s) in file
# Usage:
# replaceLines <file> <first line> <last line> [replacement data]
proc replaceLines { args } {
if {[llength $args] >= 3} then {
foreach {file start end} $args break
set cmd [list lreplace [split [read [set f [open $file r]]] \n] $start $end]
close $f
if {[llength $args] > 3} then {lappend cmd [lindex $args 3]}
puts -nonewline [set f [open $file w]] [join [eval $cmd] \n]
close $f
} else {
error "wrong # args: should be "[lindex [info level 0] 0] file start end ?replacement?""
}
} ;# replaceLines
What's up with the screwed up indentation and added braces and keywords?
btw: here's a more recent version of that proc (the syntax is identical, but you can also add more lines passed as separate arguments and it's a bit faster)