un welcome.
#1
Bonjour,

Voila sur mon server quelqu'un m'avait demandé de lui faire un welcome en tcl.

Bon jusque la pas de soucis mais que le welcome dise un message différent à chaque join.

Donc en gros il prend au hasard une phrase mise dans le tcl.
J'ai fait ceci par un set ... et voila.
Le code et activable sur salon donc pour activé : !won pour désactivé : !woff.

Voici le code :

TCL
setudef flag WS
 
set ::phrases {
  "Bonjour bienvenue sur le salon !"
  "Hello tu es le bienvenue pose toi tranquil"
  "salut tu es sur le salon alors soit la bienvenue à toi !"
}
 
bind join - "*" wj
proc wj {nick uhost handle chan} {
  if {[channel get $chan WS]==0} { return; }
    if {$nick == $::botnick } { return 0 }
  set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
  putserv "PRIVMSG $chan :\0034 $::phrase\0031"
}
 
bind pub o "!won" won
proc won { nick host hand chan arg } {
		set arg [gbfilter $arg]
if {[channel get $chan WS] == 0} {
  channel set $chan +WS
  putquick "PRIVMSG $chan :Welcome Activé sur $chan !" 
} else {
putquick "PRIVMSG $chan :Welcome déjà Activé sur $chan !"
   }
}
 
bind pub o "!woff" woff
proc woff { nick host hand chan arg } {
		set arg [gbfilter $arg]
if {[channel get $chan WS] != 0} {
  channel set $chan -WS
  putquick "PRIVMSG $chan :Welcome Désactivé sur $chan !" 
} else {
putquick "PRIVMSG $chan :Welcome déjà Désactivé sur $chan !"
   }
}
 
proc gbfilter {x {y ""} } {
	for {set i 0} {$i < [string length $x]} {incr i} {
		switch -- [string index $x $i] {
			"\"" {append y "\\\""}
			"\\" {append y "\\\\"}
			"\[" {append y "\\\["}
			"\]" {append y "\\\]"}
			"\} " {append y "\\\} "}
			"\{" {append y "\\\{"}
			default {append y [string index $x $i]}
		}
	}
	return $y
}


Répondre Avertir
#2
salut,

j me permet de simplifier légèrement ton code qui contient pas mal de superflus

TCL
setudef flag WS
 
set ::phrases {
  "Bonjour bienvenue sur le salon !"
  "Hello tu es le bienvenue pose toi tranquil"
  "salut tu es sur le salon alors soit la bienvenue à toi !"
}
 
bind join - "*" wj
proc wj {nick uhost handle chan} {
  if {![channel get $chan WS] || [isbotnick $nick]} return
  set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
  putserv "PRIVMSG $chan :\0034 $::phrase\0031"
}
 
bind pub o "!won" won
proc won { nick host hand chan arg } {
  if ![channel get $chan WS] {
    channel set $chan +WS
    putquick "PRIVMSG $chan :Welcome Activé sur $chan !"
    return
  }
  putquick "PRIVMSG $chan :Welcome déjà Activé sur $chan !"
}
 
bind pub o "!woff" woff
proc woff { nick host hand chan arg } {
  if [channel get $chan WS] {
    channel set $chan -WS
    putquick "PRIVMSG $chan :Welcome Désactivé sur $chan !"
    return
  } 
  putquick "PRIVMSG $chan :Welcome déjà Désactivé sur $chan !"
}


C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#3
des superflus ? ta retiré juste la procedure gbfilter Mad
et aussi en modifiant pour l'exeption de botnick.

Mais que parle tu de superflus exactement ?
Répondre Avertir
#4
le gbfilter il te sert a quoi ?
[font=Times New Roman]La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.[/font]
Répondre Avertir
#5
c'est un code que tu peut modifié donc il et possible que si certaines personnes le modifie et celon leur modification il peut être utile pour ce qu'il en font.
Répondre Avertir
#6
ba
TCL
if {[channel get $chan WS]==0} { return; }
    if {$nick == $::botnick } { return 0 }


le "==0" est superflus la puisque dans ce cas la "channel get" est un bouléan (1 ou 0) et que if gère exclusivement les bouléans

le "{ return; }", à quoi te sers le ; et les { } ?

ensuite tu met un 2em if alors qu'un "||" (ou) fait parfaitement l'affaire et est bien plus approprié.

ensuite ta proc gbfilter est parfaitement inutile, dans le cas ou $arg contiendrais des {["]} il suffi simplement de split/join

pour moi c est du superflus tout ça. Maintenant j t'ai donné ça, t'en fait ce que tu veux, c'est selon si tu veux progresser ou pas
bref
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#7
Oui bien sur je ne dis pas ça dans le sens "je m'en fou ce que tu dis ou autre"
Au contraire ce que tu dis m'intéresse pas mal car progresser et le but.

Merci pour le tout je vais revoir le code bientôt et voir faire le système complètement différemment Wink
Répondre Avertir
#8
Je suis d'accord avec la suppression de la procédure gbfilter, vu qu'elle n'est appelée nul part.
Par contre je n'aime pas la supression des {} après un if, ça rend le code plus dur à lire. Mais c'est un avis perso, j'aime qu'un code soit stricte et écrit de manière agréable.
Répondre


Atteindre :


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