Bonjour
soyons bref mais clair ... je suis entrain de bricoler une espece d'horloge parlante qui envois sur mon chan un message different a chaque heure... ce script fonctionne tres bien a toute les heures SAUF a 9h et 10h ou il ne me donnes pas de message parcontre j'ai un retour en PL
pour 9h...
Code :
[08:00] Tcl error [pub_timer]: missing operator at _@_
in expression "0_@_8+1";
looks like invalid octal number
et pour 10h j'ai le meme message avec un 9 a la place du 8
voici ci apres le bout de script que j'utilise
Code :
...
# on definis les binds
bind time - "00 * * * *" pub_timer
# puis les proc
proc pub_timer {min hour day month year} {
# appel des variables globales
global offset dst chan
## definition des variable heure-minutes-secondes
set h [clock format [clock seconds] -format "%H"]
set m [clock format [clock seconds] -format "%M"]
if {$dst==1} {
set h [expr $h+$offset+1]
} else {
set h [expr $h+$offset]
}
if {$h == 24} {set h 0}
#switch pour avoir le message de l'heure
switch $h {
0 {putserv "PRIVMSG $chan :Hey il est $h:$m. Faudrais penser a aller se coucher"}
1 {putserv "PRIVMSG $chan :$h:$m.... j'en connais qui vont être fais demain"}
2 {putserv "PRIVMSG $chan :deja $h:$m. Lachez les films humhum et allez vous coucher ca vaudras mieux"}
3 {putserv "PRIVMSG $chan :dites il est quand meme $h:$m, c'est pas la peine de vous priver de sommeil pour moi"}
4 {putserv "PRIVMSG $chan :Oula $h:$m et on n'est la a discuter.... qui qui va pas savoir se lever tout a l'heure ? moi perso j'm'en tape j'suis un bot"}
5 {putserv "PRIVMSG $chan :Il est $h:$m Paris s'eveille. Et vous n'avez pas sommeil ?"}
6 {putserv "PRIVMSG $chan :dring dring dring... Hey ouai c'est le reveil deja $h:$m .Encore une nuit blanche"}
7 {putserv "PRIVMSG $chan :Un cafe creme pour moi et de la confiture de fraises pour mes brioches. Merci"}
8 {putserv "PRIVMSG $chan :Allez les enfants il est $h:$m, faut se preparer pour l'ecole"}
9 {putserv "PRIVMSG $chan :Bon $h:$m, qui a ramener le journal ce matin ?"}
10 {putserv "PRIVMSG $chan :AHHHHH $h:$m enfin l'heure de la pause cafe"}
11 {putserv "PRIVMSG $chan :P'pa t'es a la bourre.... les autres, courage plus qu'une heure et c'est la pause dej"}
...
mais ou donc se trouve mon erreur ? ou vas t'il me chercher ce _@_ ?
A voir l'erreur, TCL doit prendre un nombre décimal pour un nombre octal.
En fait, c'est normal, car quand le nombre en question est précédé d'un 0 dans expr, il est automatiquement traité comme un nombre octal. D'ou le bug avec 08 09 etc => ce ne sont pas des nombres octaux valides.
Pour moins de problèmes, moi je dis, vaut mieux utiliser incr :
tcl
set h [clockformat[clock seconds] -format"%H"]set m [clockformat[clock seconds] -format"%M"]set s [clockformat[clock seconds] -format"%S"]if{$dst==1}{set h [expr$h+$offset+1]}else{set h [expr$h+$offset]}if{$h==24}{set h 0}
=> Après quelques changements:
tcl
set h [strftime "%H"]incr h $offsetincr h $dstif{$h == 24}{set h 0}