[Demande] Optimisation de mon script
#1
Bonjour à tous,

J'aimerai un script assez simple de réponse à !commande, !info ou autre mais sur un channel bien spécifique.

Actuellement j'utilise ceci, il fait ce que je veux mais je suis persuadé qu'il y a beaucoup plus simple :

Citation :bind pub - !help pub:help
if {$chan == "#Channel"} {
proc pub:help { nick uhost handle chan arg } {
putserv "NOTICE $nick :La réponse..."
}
}

bind pub - !info pub:info
if {$chan == "#Channel"} {
proc pub:info { nick uhost handle chan arg } {
putserv "NOTICE $nick :La réponse..."
}
}

........
........

Merci d'avance pour votre aide
Répondre Avertir
#2
Il y a très peu de chances que ça fonctionne:
TCL
bind pub - !info pub:info
if {$chan == "#Channel"} {
   proc pub:info { nick uhost handle chan arg } {
      putserv "NOTICE $nick :La réponse..."
   }
}


Lors du chargement de ton script, tu vas avoir un joli plantage car $chan n'est pas défini. Ta condition doit être DANS la procédure.

Sinon, il n'y a pas grand chose d'optimisable dans un script aussi simple.
Répondre
#3
Salut,

Alors plusieurs réponse peuvent se faire :

TCL
bind pub - !help pub:help
proc pub:help { nick uhost handle chan arg } {
    if {$chan == "#Channel"} {
        putserv "NOTICE $nick :La réponse..."
    }
}



La j'ai repris ton code au niveau de ton if je l'ai replacer..
Ensuite ce que moi je ferais plutôt :

TCL
namespace eval ::xhelp {
 
    # Salon ou ont décide que le code fonctionne.
    variable salons "#salon"
    
    # Les binds.
    bind pub - "!help" [namespace current]::help
    
    # Les procédures.
    proc help { nick host hand chan arg } {
        variable salons
        putserv "privmsg $salons :La réponse.."
    }
}

# Nous pouvons même faire mieux.. Nous désirons sa sois active sur plusieurs salons.
# Pour celà nous allons utilisé le système de sétudef ce qui nous donnerais ceci :
 
namespace eval ::xhelp {
 
    # Nous mettons le nom du setudef.
    setudef flag HH
    
    # Les binds.
    bind pub - "!help" [namespace current]::help
    
    # Les procédures.
    proc help { nick host hand chan arg } {
        if {[channel get $chan HH]==0} { return; }
            putserv "notice $nick :Voice la liste"
    }
}

# Pour activer ce système la en PL te faudra tapez : .channel set #salon +HH



Voilà en espérant que je t'aurais était utile en te donnant ceci
Répondre Avertir
#4
Tout d'abord merci à vous pour vos réponses.

Effectivement, petite erreur de frappe, j'utilise ceci:

Code :
bind pub - !commande1 pub:commande1
proc pub:commande1 { nick uhost handle chan arg } { if {$chan == "#MonChannel"} {
putserv "NOTICE $nick :La réponse"
}}

Quand je parle d'optimisation, n'y a t-il pas un moyen plus simple en utilisant des "if" ou autre pour chaque commande ?

Du genre:

if "commande1" alors "réponse1"
if "commande2" alors "réponse2"

Sans devoir à chaque refaire tout le code cité au dessus pour chaque !commande ?
Répondre Avertir
#5
Dans c'est cas la le mieux serait de passer en switch.. Enfin pour ma part sa me semble plus judicieux.

La je n'es pas le temps mais demain lorsque je serait de retour chez moi, Je pourrais montrer un bout de code du moin si cela n'a pas était fait.
Ou alors regarde sur des codes tel que jokes.tcl je crois il dispose d'un système de la sorte.
Répondre Avertir
#6
Comme le dit aliasangelius, le code de jokes.tcl est parfaitement adapté, en le simplifiant un peu.

Sinon, un bind pubm et un switch sur le premier mot est aussi efficace.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté