il est parfois utile d avoir des binds pub et msg qui font la même chose
exemple: !op et /msg bot op #salon
il convient de faire une procédure par bind puisque celles ci n'acceptent pas le même nombre d arguments
seulement ça peut devenir extrêmement lassant de devoir copier/coller les procs alors que l'on peut gérer ca directement avec tcl
ici on déclarera seulement "args" pour la procédure (qui admet un nombre illimité d argument)
on vas maintenant créer une proc qui gère l'assignement des arguments histoire de ne pas devoir tout réécrire pour chaques commandes
voila, en espérant que ça pourra vous être utile ;)
exemple: !op et /msg bot op #salon
il convient de faire une procédure par bind puisque celles ci n'acceptent pas le même nombre d arguments
tcl
bind pub o !op pub:op
bind msg o op msg:op
proc pub:op {nick host hand chan arg} {
putserv "MODE $chan +o $nick"
}
proc msg:op {nick host hand arg} {
set chan [lindex $arg 0]
if ![validchan $chan] {
putserv "NOTICE $nick :salon invalide."
return
}
putserv "MODE $chan +o $nick"
}
seulement ça peut devenir extrêmement lassant de devoir copier/coller les procs alors que l'on peut gérer ca directement avec tcl
ici on déclarera seulement "args" pour la procédure (qui admet un nombre illimité d argument)
tcl
bind pub o !op test:op
bind msg o op test:op
proc test:op args {
set arg [lassign $args nick host hand chan]
if {[llength $chan]>1} {
set arg [lassign $chan chan]
if ![validchan $chan] {
putserv "NOTICE $nick :salon invalide."
return
}
}
putserv "MODE $chan +o $nick"
}
on vas maintenant créer une proc qui gère l'assignement des arguments histoire de ne pas devoir tout réécrire pour chaques commandes
tcl
proc arg_assign {} {
uplevel 1 {
set arg [lassign $args nick host hand chan]
if {[llength $chan]>1} {
set arg [lassign $chan chan]
}
}
}
bind pub o !op test:op
bind msg o op test:op
proc test:op args {
arg_assign
if ![validchan $chan] {
putserv "NOTICE $nick :salon invalide."
return
}
putserv "MODE $chan +o $nick"
}
voila, en espérant que ça pourra vous être utile ;)