Conditions
Une condition permet de vérifier des arguments, afin d'effectuer ce que vous voulez. Vous en aurez certainement besoin très souvent, c'est la base, une des choses les plus importantes en tcl.
Contents
if...elseif...else
Syntaxe
if {expression} {commandes}
elseif {autre expression} {commandes}
else {commandes}
Exemples
Condition simple
bind pub - !statut pub:statut
proc pub:statut {nick host handle chan arg} {
if { [isop $nick $chan] } {
puthelp "PRIVMSG $chan :$nick est Opérateur de $chan"
puthelp "NOTICE $nick :Tu est Opérateur sur $chan"
}
}
Ce script envoit un message sur le salon si la personne qui tape !statut est opérateur sur le salon. Vous pouvez utiliser "else" dans le cas ou votre premiere condition n'est pas confirmé.
Gestion d'alternative
bind pub - !statut pub:statut
proc pub:statut {nick host handle chan arg} {
if { [isop $nick $chan] } {
puthelp "PRIVMSG $chan :$nick est Opérateur de $chan"
puthelp "NOTICE $nick :Tu est Opérateur sur $chan"
} else {
puthelp "PRIVMSG $chan :$nick n'est pas Opérateur de $chan"
puthelp "NOTICE $nick :Tu n'est pas opérateur sur $chan"
}
}
Ce script vous indique si vous êtes opérateur ou non du salon sur lequel vous avez taper !statut.
switch
En fait, la commande switch est une alternative d'une longue série de if ... elseif ... elseif ... else ...
Syntaxe
switch $var {
valeur1 {
...
}
valeur2 {
...
}
valeur3 {
...
}
}
Exemple
bind pub - !help pub:help
proc pub:help { nick uhost handle chan arg } {
global botnick
set help_commande [lindex $arg 0]
switch $help_commande {
"help" {
puthelp "NOTICE $nick :La commande help permet d'avoir de l'aide sur une commande"
puthelp "NOTICE $nick :Syntaxe : !help commande"
return 0
}
"op" {
puthelp "NOTICE $nick :La commande op permet d'oper une personne sur un salon"
puthelp "NOTICE $nick :La commande require d'avoir un access sur le robot pour l'utiliser"
puthelp "NOTICE $nick :Syntaxe : !op pseudo"
return 0
}
default {
puthelp "NOTICE $nick :Syntaxe : !help commande"
puthelp "NOTICE $nick :Pour avoir la liste des commandes, tape !showcommands"
return 0
}
}
}
Quelqu'un ne connaissant pas la commande switch aurait fait :
bind pub - !help pub:help
proc pub:help { nick uhost handle chan arg } {
global botnick
set help_commande [lindex $arg 0]
if { $help_commande == "help" } {
puthelp "NOTICE $nick :La commande help permet d'avoir de l'aide sur une commande"
puthelp "NOTICE $nick :Syntaxe : !help commande"
return 0
} elseif { $help_commande == "op" } {
puthelp "NOTICE $nick :La commande op permet d'oper une personne sur un salon"
puthelp "NOTICE $nick :La commande require d'avoir un access sur le robot pour l'utiliser"
puthelp "NOTICE $nick :Syntaxe : !op pseudo"
return 0
} else {
puthelp "NOTICE $nick :Syntaxe : !help commande"
puthelp "NOTICE $nick :Pour avoir la liste des commandes, tape !showcommands"
return 0
}
A retenir
Expression et valeur
Dans le cas du if, on traite une expression binaire, c'est à dire que la condition testée doit renvoyer vrai ou faux (0 ou 1), alors que dans le cas du switch on traite une valeur qui est évalué avant.
valeur default
La valeur default traite toutes les conditions qui n'ont pas rempli un cas décrit précédemment.
Pour rendre le code plus lisible, il vaut mieux la placer à la fin des conditions, de la même manière que le else final.