demande de compression du code si possible
#1
* Reseau: Orange
* Type de pseudo: nick ou nick|ext
* Fonction: privmsg via socket TCL

Demande: Est-il possible de simplifier le string match de ce code je m'explique:

si DANS $nick il y a "|" alors je split $nick | pour recuperé la valeur avant "|" pour crée nick2 afin de vérifié AUTRE je vérifie $nick.

Mon code me parait excessivement GROS pour une simple vérification ! Si quelqu'un à une idée, je suis preneur ! Je vous remercie d'avance

TCL
"PRIVMSG" {
			set user [string trim [lindex $arg 0] :]
			set nick [lindex [split $user !] 0]
			set chan [string tolower [lindex $arg 2]]
			set cmd [string trim [string tolower [lindex $arg 3]] :]
			switch -exact $cmd {
				"csauth" {
					if [string match *|* $nick] {
						set nick2 [lindex [split $nick |] 0]
						if [iscsa $nick2] {
							send ":$webs(socket:nick) PRIVMSG $webs(chan:log) :*** CSAUTH $nick"
							send ":$webs(socket:nick) NOTICE $nick :MOTD $webs(chan:log) Bienvenue chez les CsAdmins de $webs(socket:nick)"
							send ":$webs(socket:nick) INVITE $nick $webs(chan:log)"
						}
					} else { 
						if [iscsa $nick] {
							send ":$webs(socket:nick) PRIVMSG $webs(chan:log) :*** CSAUTH $nick"
							send ":$webs(socket:nick) NOTICE $nick :MOTD $webs(chan:log) Bienvenue chez les CsAdmins de $webs(socket:nick)"
							send ":$webs(socket:nick) INVITE $nick $webs(chan:log)"
						}
					}
				}


[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
Répondre Avertir
#2
Et ça se dit CoderZ...
TCL
set nick [lindex [split $nick |] 0]


S'il y a un |, $nick contient la partie qui le précède. S'il n'y en a pas, $nick contient l'intégralité de la chaine.
Et donc, pas besoin de faire un string match.

Code :
.tcl set toto [lindex [split "abc" |] 0]; putlog $toto
> abc

.tcl set toto [lindex [split "abc|test" |] 0]; putlog $toto
> abc
Répondre
#3
en gros, je ferai un:

set user [string trim [lindex $arg 0] :]
set nick [lindex [split $user !] 0]
set nick2 [lindex [split nick |] 0]

Et je fais:
"csauth", verif nick2, si ok => $nick est csauth

si j'ai bien tout saisi

(merci du temps que tu passes sur la Board)
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
Répondre Avertir
#4
Heu, je ne te comprends pas bien là.
Ton code devrait être:
TCL
"PRIVMSG" {
   set user [string trim [lindex $arg 0] :]
   set nick [lindex [split $user !] 0]
   set nick [lindex [split $nick |] 0]
   set chan [string tolower [lindex $arg 2]]
   set cmd [string trim [string tolower [lindex $arg 3]] :]
   switch -exact $cmd {
      "csauth" {
         if [iscsa $nick] {
            send ":$webs(socket:nick) PRIVMSG $webs(chan:log) :*** CSAUTH $nick"
            send ":$webs(socket:nick) NOTICE $nick :MOTD $webs(chan:log) Bienvenue chez les CsAdmins de $webs(socket:nick)"
            send ":$webs(socket:nick) INVITE $nick $webs(chan:log)"
         }
      }
   }
}


Sauf si tu veux pouvoir utiliser le nick actuellement utilisé sur IRC ET le nick sous lequel est reconnu l'utilisateur.
Répondre
#5
(07/12/2012, 13:49)CrazyCat a écrit : Sauf si tu veux pouvoir utiliser le nick actuellement utilisé sur IRC ET le nick sous lequel est reconnu l'utilisateur.

c'est exactement sa ! donc mes déclarations sont correctes il me semble !
Merci ChatFou ! Smile
[Image: http://www.web-modules.net/upload/cache/...156/61.gif]
[ www.Ahinu.tk ]

Programmation TCL interprété via Eggdrop + package mysqltcl
=> TCL+SQL~PHP

@Nordnet.
Répondre Avertir


Atteindre :


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