18/01/2009, 03:31 (Modification du message : 18/01/2009, 03:32 par Aragorn.)
Alors voila j'ai un news.tcl mais j'ai un souci dessus
Voila le tcl en question:
tcl
############# News.tcl #############set backroom "#Staff";set base "/home/Aragorn/shell/eggnews/scripts/News/news.txt";
bind pub - "!helpnews" news:help
proc news:help {nick uhost handle chan text}{
putserv "NOTICE $nick :\00312Debut de l'aide de News-Staff"
putserv "NOTICE $nick :\0034!addnews <news>\00312 Pour ajouter une news"
putserv "NOTICE $nick :\0034!news <numero>\00312 Pour voir une news precise"
putserv "NOTICE $nick :\0034!delnews <numero>\00312 Pour suprimer une news"
putserv "NOTICE $nick :\00312Fin de l'aide de News-Staff"}
bind pub - "!addnews" news:sent
proc news:sent {nick uhost handle chan text}{set fp [open$::base a]puts$fp"$nick $text"close$fp
putserv "NOTICE $nick :\00312Votre news a été enregistrée"}
bind pub - "!news" news:readproc news:read{nick uhost handle chan args}{if{[lindex$args0] eq ""}{return0}else{set nb [lindex$args0]}set fp [open$::base r]set cpt 0set data [read -nonewline $fp]close$fpforeach templine [split$data"\n"]{incr cpt
if{$cpt == $nb}{set line [split$templine]set$user[lindex$line0]
putserv "PRIVMSG $::backroom $user\00312 => [lindex $line 1]"return1}}
putserv "PRIVMSG $::backroom \00312news $nb introuvable"}
bind pub - "!delnews" news:del
proc news:del {nick uhost handle chan args}{if{[lindex$args0] eq ""}{return0}else{set nb [lindex$args0]}set fp [open$::base r]set cpt 0set data [read -nonewline $fp]close$fpset fp [open$::base w]foreach templine [split$data"\n"]{incr cpt
if{$cpt!= $nb}{puts$fp$templine}}close$fp
putserv "NOTICE $nick :\00312La news $nb as été suprimée"}
Alors la commande !addnews fonctionne parfaitement la commande !delnews fonctionne aussi le problème vient de la commandes !news nomero de la news sa ne marche pas:
tcl
-02:17:27- ‹Aragorn› !addnews je test pour voir
-02:17:28- Notice News-Staff:Aragorn Votre news a été enregistrée
-02:17:34- ‹Aragorn› !news 1
Et voila le message d'erreur en party-line avec le bot:
tcl
-02:17:34- <News>[01:20] Tcl error[news:read]: can't read"user": no such variable
Voila je ne vois pas d'ou vient le problème merci de votre aide futur.
Et j'aimerais aussi avoir une commande !newslist qui donnerai en notice la list complète des news et aussi avoir la date de la news.
Actuellement les news sont enregistrer de la façon "pseudo news" je voudrai quel soit enregistré de la façon "date pseudo news".
Voila j'arrete là merci de votre aide futur.
Cordialement Aragorn.
cela fonctionne mais j'ai un autre souci la news ne se lit pas entierement
tcl
-16:04:34- ‹Aragorn› !addnews sa marche ou pas
-16:04:36- Notice News:Vampire Votre news a été enregistrée
-16:04:42- ‹Aragorn› !news 1
-16:04:43- ‹News› Aragorn »» sa
Bonsoir, CrazyCat j'ai me le code que tu ma fourni sa fonctionne impec
Encore merci as vous pour votre aide
Je poste le code complet fini au cas ou d'autres personne en es besoin.
tcl
############# News.tcl #############set backroom "#Staff";set base "/home/votre-chemin/news.txt";
bind pub - "!helpnews" news:help
proc news:help {nick uhost handle chan text}{
putserv "NOTICE $nick :\00312Debut de l'aide de News"
putserv "NOTICE $nick :\0034"
putserv "NOTICE $nick :\0034!addnews <news>\00312 Pour ajouter une news"
putserv "NOTICE $nick :\0034!newslist\00312 Pour voir toute les news"
putserv "NOTICE $nick :\0034!news <numero>\00312 Pour voir une news precise"
putserv "NOTICE $nick :\0034!delnews <numero>\00312 Pour suprimer une news"
putserv "NOTICE $nick :\0034"
putserv "NOTICE $nick :\00312Fin de l'aide de News"
putserv "PRIVMSG #Services :\00312News Help : \0034$nick"}
bind pub - "!addnews" news:sent
proc news:sent {nick uhost handle chan text}{set fp [open$::base a]puts$fp"[clock format [clock seconds] -format "%d/%m/%y"] $nick $text"close$fp
putserv "NOTICE $nick :\00312Votre news a été enregistrée"
putserv "PRIVMSG #Services :\00312Add News : \0034$nick"}
bind pub - "!newslist" news:listproc news:list{nick uhost handle chan text}{set fp [open$::base r]set data [read -nonewline $fp]close$fpforeach templine [split$data"\n"]{set line [split$templine]
puthelp "NOTICE $nick :$line"
putserv "PRIVMSG #Services :\00312News list : \0034$nick"}}
bind pub - "!news" news:readproc news:read{nick uhost handle chan args}{if{[lindex$args0] eq ""}{return0}else{set nb [lindex$args0]}set fp [open$::base r]set cpt 0set data [read -nonewline $fp]close$fpforeach templine [split$data"\n"]{incr cpt
if{$cpt == $nb}{set line [split$templine]set user [lindex$line0]
putserv "PRIVMSG $::backroom $user\00312 »» [lrange $line 1 end]"return1}}
putserv "PRIVMSG $::backroom \00312news $nb introuvable"
putserv "PRIVMSG #Services :\00312News : \0034$nick"}
bind pub - "!delnews" news:del
proc news:del {nick uhost handle chan args}{if{[lindex$args0] eq ""}{return0}else{set nb [lindex$args0]}set fp [open$::base r]set cpt 0set data [read -nonewline $fp]close$fpset fp [open$::base w]foreach templine [split$data"\n"]{incr cpt
if{$cpt!= $nb}{puts$fp$templine}}close$fp
putserv "NOTICE $nick :\00312La news $nb as été suprimée"
putserv "PRIVMSG #Services :\00312Del News : \0034$nick"}
putlog "\00312News.tcl V1.0 par Vampire chargé..."
Si je puis me permettre une petite réflexion (personnelle), le script serait peut-être plus rapide si les news étaient chargées en mémoire (dans un tableau) lors de l'initialisation du tcl.
Pour la lecture d'une news, tu n'aurais plus qu'à lire la bonne ligne du tableau, sans ouvrir le fichier.
Pour la suppression et l'ajout, il te suffirait de modifier le tableau (supprimer l'élément X ou ajouter un élément) puis sauvegarder dans ton fichier.
Et tu pourrais capitaliser avec une procédure (news2file par exemple) qui se chargerait de l'écriture du fichier.
tout les commandes je peux faire !news sur #Accueil et tout mes user von voir les news de staff ... :S il me faudrais un code comme sa avec la host
bind pub - !h+ h+
proc h+ { nick uhost handle channel arg } {
if {
[string match -nocase *@AdminZone.zet-land.org $uhost] ||
[string match -nocase *@OpZone.zet-land.org $uhost] ||
[string match -nocase *@TechAdmin.zet-land.org $uhost] ||
[string match -nocase *@ChefAdmin.zet-land.org $uhost] ||
[string match -nocase *@NetAdmin.zet-land.org $uhost] ||
[string match -nocase *@ChefZone.zet-land.org $uhost] ||
[string match -nocase *@ChanAdmin.zet-land.org $uhost] ||
[string match -nocase *@ChanOp.zet-land.org $uhost] ||
[string match -nocase *@AnimPlus.zet-land.org $uhost]
} {
putquick "MODE $channel +h $nick"
} }
C'est un exemple mais j'ignore comment ajouter les vhost dans la remote de news et j'ignore comment faire des news pour SEULEMENT 1 salon :S exmeple que jai mon eggdrop sur 2 salon ben que jaimerais qu'il dise les news du salon staff sur #staff et les news des admin sur #admin tu comprend ... ? Merci de répondre ^^
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.