29/10/2012, 13:23
Salut,
Test comme sa voir
Test comme sa voir
tcl
set ::uinfo(db) "scripts/userinfo.db"
bind msg - info uinfo:set
bind join - * uinfo:join
proc putinfo {arg} {
putlog "\002\[User-Info\]\002 $arg."
}
if ![file exists $::uinfo(db)] {
catch {open $::uinfo(db) w} pl
catch {close $pl}
putinfo "Création de la base de donnée ([pwd]/$::uinfo(db))"
}
proc uinfo:set {nick host hand arg} {
global uinfo
set arg [charfilter $arg]
set chan [string tolower [lindex $arg 0]]
set info [lrange $arg 1 end]
if {[string index $chan 0]!="#" && $chan!="*"} {
putserv "NOTICE $nick :\002Syntaxe :\002 /msg $::botnick INFO <#salon> ?votre info?"
putserv "NOTICE $nick :Mettre * à la place du salon pour une info global. Pour supprimer l'info laisser la vide."
return 0
}
set x 0
set find 0
catch {open $uinfo(db) r} pl
while {![eof $pl]} {
gets $pl data
incr x
set data [charfilter $data]
if {$data!=""} {
set h [lindex $data 0]
set c [lindex $data 1]
if {$h==$nick && $c==$chan} {
set find 1
del $uinfo(db) $x
}
}
}
catch {close $pl}
if {$info!=""} {add $uinfo(db) "$hand $chan $info"} else {set find 2}
set c [isglobalinfo $chan]
if {$find==0} {
set r "a été crée"
} elseif {$find==1} {
set r "a été modifiée"
} elseif {$find==2} {
set r "a été supprimée"
}
putserv "NOTICE $nick :Votre info $c $r."
putinfo "\002$nick\002 ($nick) vien de [lindex $r end] son info $c"
}
proc uinfo:join {nick host hand chan} {
global uinfo
set find 0
catch {open $uinfo(db) r} pl
while {![eof $pl]} {
gets $pl data
set data [charfilter $data]
if {$data!=""} {
set h [lindex $data 0]
set c [lindex $data 1]
if {$h==$hand && ([string tolower $c]==[string tolower $chan] || $c=="*")} {
putquick "PRIVMSG $chan :\002\[[join $nick]\]\002 [join [lrange $data 2 end]]"
set find 1
}
}
}
catch {close $pl}
if [matchattr $nick ""] {
if {$find==0} {putquick "PRIVMSG $chan :\002\[[join $nick]\]\002"}
putquick "MODE $chan -v $nick"
}
}
proc isglobalinfo {chan} {
if {$chan=="*"} {return "global"}
return "sur $chan"
}
proc del {file line} {
set i 0
catch {open $file r+} p
while {![eof $p]} {
gets $p data
incr i
set data [charfilter $data]
set vecteur($i) $data
}
catch {close $p}
catch {open $file w+} p
catch {close $p}
catch {open $file a+} p
set u 0
while {$u <= $i} {
incr u
if {$u != $line} {
if {[info exists vecteur($u)] && $vecteur($u) != ""} {
puts $p [join $vecteur($u)]
}
}
}
catch {close $p}
}
proc add {file arg} {
set arg [charfilter [join $arg]]
catch {open $file a+} p
puts $p [join $arg]
catch {close $p}
}
proc charfilter {arg} {
string map {"\\" "\\\\" "\{" "\\\{" "\}" "\\\}" "\[" "\\\[" "\]" "\\\]" "\"" "\\\""} $arg
}
putinfo "Par Dj_KennY"