Erreu avec Apho-greet
#16
J'aurais été surpris que ça fonctionne vu le bind.
Pour ma part, j'aurais fait:
tcl
foreach c [split $::aphogreet::pub_chans]} {
   bind join - "$c *" [namespace current]::changegreet
}


Répondre
#17
Il suffit de relire la doc sur le bind join et son masque. Et en aucun cas il ne prend plusieurs canaux, il prend: "#canal user!ident@host"
Répondre
#18
Bon, j'en ai marre de vous voir vous échiner là dessus, je vous aide:
tcl
if { $nick == $::botnick } && { $aphogreet::grouped_bot == -1 } && { $::owner != "" } && { $handle == $::owner } && { $::owner == "" } && { [lsearch -exact [userlist n|] $handle] != 1 } {


Cette ligne est totalement mauvaise.
Deux exemples au hasard:
$nick == $::botnick => L'utilisateur qui entre doit être l'eggdrop ?
$:Surprisedwner!="" ... && $:Surprisedwner=="" => Ca ne se contredit pas légèrement ?

Et depuis quand un if avec de multiples conditions est de la forme : if {} && {} && {} { ?
Répondre
#19
En effet, il y a plein d'autres choses. comme par exemple le même code (ou presque) dans les deux procédures, manque d'optimisation.
L'utilisation d'une série de if au lieu d'un switch, pas top.
La procédure uninstall est complètement à revoir.

Bref, l'idée est bonne mais c'est très mal fait.
Répondre
#20
Voici le code, corrigé, fonctionnel et indenté.

tcl
#
# Apho-greet v1.0 by Belatucadrus
#
# Attribue au bot un greet aléatoire à chaque join sous la forme de curieux aphorismes.
#
# Exemple : (@Cerbere) [Umbreon] La lumière est à l'amour ce que nos rêves est à l'être
# Vous pouvez également utiliser la commande !aphorisme pour que le bot sorte un aphorisme en public
#
# Le bot utilise deux sets de morceaux d'aphorismes différents, le premier etant tiré du célèbre Pipotron.
#
# Avec quelques notions vous pouvez rajouter vos propres sets.
namespace eval aphogreet {
 
##############################################
##############################################
############## CONFIGURATION #################
##############################################
##############################################
 
#Canaux sur lesquels la commande !aphorisme fonctionnera
variable pub_chans "#Accueil"
 
set morceau_1 {
"Avec"
"Considérant"
"Où que nous mène"
"Eu égard à"
"Vu"
"En ce qui concerne"
"Dans le cas particulier de"
"Quelle que soit"
"Du fait de"
"Tant que durera"
"Malgré"
"Par"
"Ayant eu pris connaissance de"
"Puisque ce n'est pas"
"Etant donné que nous suivons"
"Car il ne faut jamais négliger"
"En analysant"
}
 
set morceau_2 {
"la situation"
"la conjoncture"
"la crise"
"l'inertie"
"l'impasse"
"l'éxtrémité"
"l'abstention"
"la sinistrose"
"la dualité de la situation"
"la baisse de confiance"
"la société"
"la connaissance"
"la bêtise"
"la violence et la rancoeur"
"cette folie"
"cette négligence"
"la dépression"
}
 
set morceau_3 {
"présente"
"actuelle"
"qui nous occupe"
"qui est la nôtre"
"induite"
"conjoncturelle"
"contemporaine"
"de cette fin de siècle"
"de la société acutelle"
"de ces derniers temps"
"humaine"
"scientifique"
"économique"
"qui nous entoure"
"désastreuse de la société"
"philosophique"
"mondiale"
}
 
set morceau_4 {
"il convient de"
"il faut"
"on se doit de"
"il est préférable de"
"il serait interessant de"
"on ne peut pas se passer de"
"il est nécessaire de"
"il serait bon de"
"il faut de toute urgence"
"cela ne sert à rien de"
"il vaudrait mieux"
"certains pensent qu'il faut"
"cela changerait le monde de"
"on ne devrait pas"
"on pourrait"
"cela serait bien de"
}
 
set morceau_5 {
"étudier"
"examiner"
"ne pas négliger"
"prendre en considération"
"anticiper"
"imaginer"
"se préoccuper de"
"s'intéresser à"
"avoir à l'esprit"
"se remémorer"
"ne pas oublier"
"noter"
"analyser"
"prendre en compte"
"s'approprier"
"élucider"
"faire face à"
}
 
set morceau_6 {
"toutes les"
"chacunes des"
"la majorité des"
"toutes les"
"l'enseble des"
"la somme des"
"la totalité des"
"la globalité des"
"toutes les"
"certaines"
"la plupart des"
"quelques"
"bon nombre des"
"la quasi-totalité des"
"tout ce qu'on peut penser des"
"une partie des"
}
 
set morceau_7 {
"solutions"
"issues"
"problématiques"
"voies"
"alternatives"
"solutions"
"issues"
"hypothèses"
"questions"
"suites"
"continuités"
"parades"
"sciences"
"fins"
"envergures"
"capacités"
"possibilités"
}
 
set morceau_8 {
"envisageables"
"possibles"
"déja en notre possession"
"s'offrant à nous"
"de bon sens"
"envisageables"
"possibles"
"employées"
"résolues"
"étudiées"
"qu'on doit encore découvrir"
"qu'on ne peut pas exploiter"
"dissimulés"
"complexes"
"pour l'économie"
"pour la société"
}
 
set aphorisme {
 
"la mort"  "l'enfance"  "l'amour"  "l'illusion"  "la haine"  "la raison"  "la réalité" "le rêve"  "la conscience"  "l'âme"  "le regard"  "dieu"  "l'enfer"  "l'obstacle"  "la fin"  "la vérité" "le diable"  "la peur"  "l'erreur"  "le plaisir"  "la volonté" "l'être"  "le paraître"  "le jugement"  "la sagesse"  "la vieillesse" "l'espoir" "nos rêves" "le conscient" "le subconscient" "l'enfance" "la lumière" "l'ombre" "la peur" "la joie" "la continuité"
 
}
}
 
bind join -|- * aphogreet_change
bind pub - !aphorisme aphogreet_generate
 
proc aphogreet_change {nick uhost handle chan } {
	if { $nick == $::botnick } { 
		if { [rand 100] < 50 } {
			set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			while {($a != $b != $c != $d) != 1} {
				set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
				set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
				set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
				set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
				set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			}
			set key [rand 14]
			if {$key == 0} { set phrase "$a n'est que $b sans $c. Là est tout le principe de $d" }
			if {$key == 1} { set phrase "$a est à $b ce que $c est à $d" }
			if {$key == 2} { set phrase "derrière $a, il n'y a bien souvent que $d et $d n'est que $e sans $c" }
			if {$key == 3} { set phrase "$a est $b de $c mais $c est $d de $e" }
			if {$key == 4} { set phrase "on parle bien souvent de $a pour ne pas penser à $c. Malheureusement, $c et $a sont liés" }
			if {$key == 5} { set phrase "on ne peut pas dissocier $a et $b. Mais avec de $c et de $d, ce n'est pas impossible." }
			if {$key == 6} { set phrase "en vérité, $a n'est que la prolongation de $b" }
			if {$key == 7} { set phrase "celui qui veut connaitre $a doit pouvoir oublier $b et faire face à $d de $c" }
			if {$key == 8} { set phrase "on renonce plus facilement à $a qu'à $b" }
			if {$key == 9} { set phrase "beaucoup de ceux qui prônent $a n'ont en fait connu que $b et $c" }
			if {$key == 10} { set phrase "on est si seuls en ce monde que $a et $b nous ont confié $c" }
			if {$key == 11} { set phrase "$a est le meilleur usage qu'on puisse faire de $b et de $c" }
			if {$key == 12} { set phrase "$a a dévoré $b dans le coeur des hommes qui ne songent qu'à $c et $d" }
			set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "qu'au" } $phrase ]
			set phrase [ string totitle $phrase 0 0 ] 
		} else {
			set a [lindex $aphogreet::morceau_1 [rand [llength $aphogreet::morceau_1]]]
			set b [lindex $aphogreet::morceau_2 [rand [llength $aphogreet::morceau_2]]]
			set c [lindex $aphogreet::morceau_3 [rand [llength $aphogreet::morceau_3]]]
			set d [lindex $aphogreet::morceau_4 [rand [llength $aphogreet::morceau_4]]]
			set e [lindex $aphogreet::morceau_5 [rand [llength $aphogreet::morceau_5]]]
			set f [lindex $aphogreet::morceau_6 [rand [llength $aphogreet::morceau_6]]]
			set g [lindex $aphogreet::morceau_7 [rand [llength $aphogreet::morceau_7]]]
			set h [lindex $aphogreet::morceau_8 [rand [llength $aphogreet::morceau_8]]]
			set phrase "$a $b $c, $d $e $f $g $h"
			set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "au" "à les" "aux" "de a" "d'a" "de e" "d'e" "de i" "d'i" "de o" "d'o" "de é" "d'é" "de u" "d'u" "de ê" "d'ê" } $phrase ]
		}
	puthelp "NS set greet \002$phrase"
	}
}
 
 
proc aphogreet_generate { nick host hand chan text } {
	if { [lsearch -exact $aphogreet::pub_chans $chan] == -1 } { return }
	if { [rand 100] < 50 } {
		set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		while {($a != $b != $c != $d) != 1} {
			set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		}
		set key [rand 14]
		if {$key == 0} { set phrase "$a n'est que $b sans $c. Là est tout le principe de $d" }
		if {$key == 1} { set phrase "$a est à $b ce que $c est à $d" }
		if {$key == 2} { set phrase "derrière $a, il n'y a bien souvent que $d et $d n'est que $e sans $c" }
		if {$key == 3} { set phrase "$a est $b de $c mais $c est $d de $e" }
		if {$key == 4} { set phrase "on parle bien souvent de $a pour ne pas penser à $c. Malheureusement, $c et $a sont liés" }
		if {$key == 5} { set phrase "on ne peut pas dissocier $a et $b. Mais avec de $c et de $d, ce n'est pas impossible." }
		if {$key == 6} { set phrase "en vérité, $a n'est que la prolongation de $b" }
		if {$key == 7} { set phrase "celui qui veut connaitre $a doit pouvoir oublier $b et faire face à $d de $c" }
		if {$key == 8} { set phrase "on renonce plus facilement à $a qu'à $b" }
		if {$key == 9} { set phrase "beaucoup de ceux qui prônent $a n'ont en fait connu que $b et $c" }
		if {$key == 10} { set phrase "on est si seuls en ce monde que $a et $b nous ont confié $c" }
		if {$key == 11} { set phrase "$a est le meilleur usage qu'on puisse faire de $b et de $c" }
		if {$key == 12} { set phrase "$a a dévoré $b dans le coeur des hommes qui ne songent qu'à $c et $d" }
		set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "qu'au" } $phrase ]
		set phrase [ string totitle $phrase 0 0 ] 
	} else {
		set a [lindex $aphogreet::morceau_1 [rand [llength $aphogreet::morceau_1]]]
		set b [lindex $aphogreet::morceau_2 [rand [llength $aphogreet::morceau_2]]]
		set c [lindex $aphogreet::morceau_3 [rand [llength $aphogreet::morceau_3]]]
		set d [lindex $aphogreet::morceau_4 [rand [llength $aphogreet::morceau_4]]]
		set e [lindex $aphogreet::morceau_5 [rand [llength $aphogreet::morceau_5]]]
		set f [lindex $aphogreet::morceau_6 [rand [llength $aphogreet::morceau_6]]]
		set g [lindex $aphogreet::morceau_7 [rand [llength $aphogreet::morceau_7]]]
		set h [lindex $aphogreet::morceau_8 [rand [llength $aphogreet::morceau_8]]]
		set phrase "$a $b $c, $d $e $f $g $h"
		set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "au" "à les" "aux" "de a" "d'a" "de e" "d'e" "de i" "d'i" "de o" "d'o" "de é" "d'é" "de u" "d'u" "de ê" "d'ê" } $phrase ]
	}
	puthelp "PRIVMSG $chan :$phrase"
}
putlog "Apho-greet v1.1 chargé !"


Good jokes, bad jokes... it's not a joke if you don't have the...
[Image: http://uppix.net/2/7/1/4b4dfe464fb212453...10f21e.png]

BELATUCADRUS SEAL OF APPROVAL
Répondre Avertir
#21
Il me semble un peu plus fonctionnel, mais j'ai quand même deux questions:
1) pourquoi te limiter à ne mettre que les variables dans le namespace, et pas aussi les procédures ?
2) tes deux procédures font exactement la même chose (pour la plus grande partie), pourquoi ne pas capitaliser le code ?

Version lègèrement optimisée:
tcl
#
# Apho-greet v1.0 by Belatucadrus
#
# Attribue au bot un greet aléatoire à chaque join sous la forme de curieux aphorismes.
#
# Exemple : (@Cerbere) [Umbreon] La lumière est à l'amour ce que nos rêves est à l'être
# Vous pouvez également utiliser la commande !aphorisme pour que le bot sorte un aphorisme en public
#
# Le bot utilise deux sets de morceaux d'aphorismes différents, le premier etant tiré du célèbre Pipotron.
#
# Avec quelques notions vous pouvez rajouter vos propres sets.
namespace eval aphogreet {
 
##############################################
##############################################
############## CONFIGURATION #################
##############################################
##############################################
 
#Canaux sur lesquels la commande !aphorisme fonctionnera
variable pub_chans "#Accueil"
 
set morceau_1 {
"Avec"
"Considérant"
"Où que nous mène"
"Eu égard à"
"Vu"
"En ce qui concerne"
"Dans le cas particulier de"
"Quelle que soit"
"Du fait de"
"Tant que durera"
"Malgré"
"Par"
"Ayant eu pris connaissance de"
"Puisque ce n'est pas"
"Etant donné que nous suivons"
"Car il ne faut jamais négliger"
"En analysant"
}
 
set morceau_2 {
"la situation"
"la conjoncture"
"la crise"
"l'inertie"
"l'impasse"
"l'éxtrémité"
"l'abstention"
"la sinistrose"
"la dualité de la situation"
"la baisse de confiance"
"la société"
"la connaissance"
"la bêtise"
"la violence et la rancoeur"
"cette folie"
"cette négligence"
"la dépression"
}
 
set morceau_3 {
"présente"
"actuelle"
"qui nous occupe"
"qui est la nôtre"
"induite"
"conjoncturelle"
"contemporaine"
"de cette fin de siècle"
"de la société acutelle"
"de ces derniers temps"
"humaine"
"scientifique"
"économique"
"qui nous entoure"
"désastreuse de la société"
"philosophique"
"mondiale"
}
 
set morceau_4 {
"il convient de"
"il faut"
"on se doit de"
"il est préférable de"
"il serait interessant de"
"on ne peut pas se passer de"
"il est nécessaire de"
"il serait bon de"
"il faut de toute urgence"
"cela ne sert à rien de"
"il vaudrait mieux"
"certains pensent qu'il faut"
"cela changerait le monde de"
"on ne devrait pas"
"on pourrait"
"cela serait bien de"
}
 
set morceau_5 {
"étudier"
"examiner"
"ne pas négliger"
"prendre en considération"
"anticiper"
"imaginer"
"se préoccuper de"
"s'intéresser à"
"avoir à l'esprit"
"se remémorer"
"ne pas oublier"
"noter"
"analyser"
"prendre en compte"
"s'approprier"
"élucider"
"faire face à"
}
 
set morceau_6 {
"toutes les"
"chacunes des"
"la majorité des"
"toutes les"
"l'enseble des"
"la somme des"
"la totalité des"
"la globalité des"
"toutes les"
"certaines"
"la plupart des"
"quelques"
"bon nombre des"
"la quasi-totalité des"
"tout ce qu'on peut penser des"
"une partie des"
}
 
set morceau_7 {
"solutions"
"issues"
"problématiques"
"voies"
"alternatives"
"solutions"
"issues"
"hypothèses"
"questions"
"suites"
"continuités"
"parades"
"sciences"
"fins"
"envergures"
"capacités"
"possibilités"
}
 
set morceau_8 {
"envisageables"
"possibles"
"déja en notre possession"
"s'offrant à nous"
"de bon sens"
"envisageables"
"possibles"
"employées"
"résolues"
"étudiées"
"qu'on doit encore découvrir"
"qu'on ne peut pas exploiter"
"dissimulés"
"complexes"
"pour l'économie"
"pour la société"
}
 
set aphorisme {
 
"la mort"  "l'enfance"  "l'amour"  "l'illusion"  "la haine"  "la raison"  "la réalité" "le rêve"  "la conscience"  "l'âme"  "le regard"  "dieu"  "l'enfer"  "l'obstacle"  "la fin"  "la vérité" "le diable"  "la peur"  "l'erreur"  "le plaisir"  "la volonté" "l'être"  "le paraître"  "le jugement"  "la sagesse"  "la vieillesse" "l'espoir" "nos rêves" "le conscient" "le subconscient" "l'enfance" "la lumière" "l'ombre" "la peur" "la joie" "la continuité"
 
}
 
bind join -|- * [namespace current]::change
bind pub - !aphorisme [namespace current]::generate
 
proc change {nick uhost handle chan } {
	if { $nick != $::botnick } { return 0; }
	puthelp "NS set greet \002[[namespace current]::sentence]"
}
 
 
proc generate { nick host hand chan text } {
	if { [lsearch -exact $aphogreet::pub_chans $chan] == -1 } { return }
	puthelp "PRIVMSG $chan :[[namespace current]::sentence]"
}
 
proc sentence {} {
 if { [rand 100] < 50 } {
		set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		while {($a != $b != $c != $d) != 1} {
			set a [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set b [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set c [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set d [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
			set e [lindex $aphogreet::aphorisme [rand [llength $aphogreet::aphorisme]]]
		}
		set key [rand 14]
		if {$key == 0} { set phrase "$a n'est que $b sans $c. Là est tout le principe de $d" }
		if {$key == 1} { set phrase "$a est à $b ce que $c est à $d" }
		if {$key == 2} { set phrase "derrière $a, il n'y a bien souvent que $d et $d n'est que $e sans $c" }
		if {$key == 3} { set phrase "$a est $b de $c mais $c est $d de $e" }
		if {$key == 4} { set phrase "on parle bien souvent de $a pour ne pas penser à $c. Malheureusement, $c et $a sont liés" }
		if {$key == 5} { set phrase "on ne peut pas dissocier $a et $b. Mais avec de $c et de $d, ce n'est pas impossible." }
		if {$key == 6} { set phrase "en vérité, $a n'est que la prolongation de $b" }
		if {$key == 7} { set phrase "celui qui veut connaitre $a doit pouvoir oublier $b et faire face à $d de $c" }
		if {$key == 8} { set phrase "on renonce plus facilement à $a qu'à $b" }
		if {$key == 9} { set phrase "beaucoup de ceux qui prônent $a n'ont en fait connu que $b et $c" }
		if {$key == 10} { set phrase "on est si seuls en ce monde que $a et $b nous ont confié $c" }
		if {$key == 11} { set phrase "$a est le meilleur usage qu'on puisse faire de $b et de $c" }
		if {$key == 12} { set phrase "$a a dévoré $b dans le coeur des hommes qui ne songent qu'à $c et $d" }
		set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "qu'au" } $phrase ]
		set phrase [ string totitle $phrase 0 0 ] 
	} else {
		set a [lindex $aphogreet::morceau_1 [rand [llength $aphogreet::morceau_1]]]
		set b [lindex $aphogreet::morceau_2 [rand [llength $aphogreet::morceau_2]]]
		set c [lindex $aphogreet::morceau_3 [rand [llength $aphogreet::morceau_3]]]
		set d [lindex $aphogreet::morceau_4 [rand [llength $aphogreet::morceau_4]]]
		set e [lindex $aphogreet::morceau_5 [rand [llength $aphogreet::morceau_5]]]
		set f [lindex $aphogreet::morceau_6 [rand [llength $aphogreet::morceau_6]]]
		set g [lindex $aphogreet::morceau_7 [rand [llength $aphogreet::morceau_7]]]
		set h [lindex $aphogreet::morceau_8 [rand [llength $aphogreet::morceau_8]]]
		set phrase "$a $b $c, $d $e $f $g $h"
		set phrase [ string map { "de le" "du" "à le" "au" "qu'à le" "au" "à les" "aux" "de a" "d'a" "de e" "d'e" "de i" "d'i" "de o" "d'o" "de é" "d'é" "de u" "d'u" "de ê" "d'ê" } $phrase ]
	}
    return $phrase
}
 
putlog "Apho-greet v1.1 chargé !"
}


Répondre
#22
TCL testé :

Code :
(•- 11:19 -•) <+ALaN> !aphorisme
(•- 11:19 -•) <@AtHeNa> ::aphogreet::sentence

Aucune erreur en PL.
Répondre Avertir
#23
Oui, correction effectuée, il manquait les [] autour de l'appel
Répondre


Atteindre :


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