Conditions

From Base de connaissances eggdrops & TCL
Jump to: navigation, search

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.

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.

Voir aussi

if, switch