Communauté Eggdrop
un welcome. - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : un welcome. (/showthread.php?tid=976)



un welcome. - aliasangelius - 23/06/2011

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
}





RE: un welcome. - djkenny - 23/06/2011

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 !"
}





RE: un welcome. - aliasangelius - 23/06/2011

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 ?


RE: un welcome. - fedora - 23/06/2011

le gbfilter il te sert a quoi ?


RE: un welcome. - aliasangelius - 23/06/2011

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.


RE: un welcome. - djkenny - 23/06/2011

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


RE: un welcome. - aliasangelius - 23/06/2011

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


RE: un welcome. - CrazyCat - 23/06/2011

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.