#Pour faire marcher le TCL : # !apprends -> Apprend un mot # kc -> Vous donne la definition de # oubli -> efface la defintion d'un mot putlog "Le bot intelligent - par tarball" set learnfile "bot.learn" bind pub * !apprends pub:learn bind pub * "?" pub:learned bind pub * "??" pub:learned bind pub * "!" pub:learned bind pub * !oubli pub:forget ####################################################### # Ne changez rien a partir d'ici..ou a vos risques :) # ####################################################### proc ctoken {str delim} { set index [string match [$delim] $str] set token [string range $str 0 $index] set strvar [string range $str $index [string length $str] ] return $token } proc msg:learn {nick host hand args} { pub:learn {$nick $host $hand "" $args} } proc pub:learn {nick host hand chan args} { global learnfile set args [string trim $args "{} "] set len [string length $args] if {$len == 0} { putserv "PRIVMSG $chan :Comment veux tu que j'apprenne ca $nick ? " return } set space [string first " " $args] if {$space == -1} { putserv "PRIVMSG $chan :Uh? Tu fais pas correctement $nick ! r'tourne a l'école" return } set word [string trim [string range $args 0 $space] ] set learn [string trim [string range $args $space $len] ] set file [open $learnfile a+] puts $file "${word}::$learn" close $file putserv "PRIVMSG $chan :$word... oki $nick :)" } proc pub:learned {nick host hand chan args} { global learnfile set found 0 set args [string trim $args "{} "] if {[string length $args] == 0} { putserv "PRIVMSG $chan :$nick Eh? " return } if [file readable $learnfile] { set file [open $learnfile RDONLY] while {1} { if [eof $file] break set line [gets $file] set len [string length $line] set colon [string first ":" $line] set word [string range $line 0 [expr $colon -1] ] set line [string range $line [expr $colon +1] $len] set len [string length $line] set colon [string first ":" $line] set flags [string range $line 0 [expr $colon -1] ] set line [string range $line [expr $colon +1] $len] if {[string compare $args $word] == 0} { putserv "PRIVMSG $chan :La définition de $word est: $line" incr found } } close $file } else { putserv "PRIVMSG $chan :Aucune idée!" return } if {$found == 0} { putserv "PRIVMSG $chan :On m'a pas appris ce qu'est $args" } } proc pub:forget {nick host hand chan args} { global learnfile set found 0 set args [string trim $args "{} "] if {[string length $args] == 0} { putserv "PRIVMSG $chan :Je me souviens meme pas la définition de ce que tu veux me faire effacer $nick .." return } if [file readable $learnfile] { set file [open $learnfile RDONLY] set newfile [open $learnfile.tmp w] while {1} { if [eof $file] break set line [gets $file] set len [string length $line] set colon [string first ":" $line] set word [string range $line 0 [expr $colon -1] ] set line [string range $line [expr $colon] $len] if {[string compare $args $word]} { puts $newfile "$word$line" } else { incr found } } close $file close $newfile } else { putserv "PRIVMSG $chan :Jsais pas.. :/" return } if {$found == 0} { putserv "PRIVMSG $chan :J'ai aucune idée ce qu'est \"$args\" " return } set file [open $learnfile w] set newfile [open $learnfile.tmp r] while { 1 } { if [eof $newfile] break puts $file [gets $newfile] } close $file close $newfile putserv "PRIVMSG $chan :J'viens d'oublier ce qu'est \"$args\" " }