Communauté Eggdrop
Faire reagir le bot sur plusieur mot - 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 : Faire reagir le bot sur plusieur mot (/showthread.php?tid=894)



Faire reagir le bot sur plusieur mot - NesCrex - 28/02/2011

Hep
Voici un script et a partir de celui la je voudrai le faire réagir sur plusieurs; par que sur le mot "f**k"
Merci Smile
Code :
# Le channel sur le quel le script va réagir:
set pschan "#Chat"

# Le bot réagit t'il sur tout les chan ou juste sur
# celui mentionné ci-dessus? 1=Oui 2=Tous
set psinchan "1"

# Le mot auquel le bot va réagir:
set pstrigger "fuck"

# Ce que le bot va répondre
# (vous pouvez y mettre de la couleur)
set psanswer "Non mais tu parle d'un langage toi!"

# La façon que le bot va répondre:
# ( notice privmsg ou chan )
set psmaniere "chan"

###############################################
################### Script ####################
###############################################
### À ne pas modifier, c'est à vos risques! ###
###############################################

bind pub - $pstrigger call_talk

proc pretalk { target channel } {
global pschan psinchan pstrigger
if { $psinchan == "1" && $pschan == $channel } {
talk $target $channel
}
if { $psinchan == "2" } {
talk $target $channel
}
if { $psinchan == "1" && $pschan != $channel } {
putlog "J'ai détecté un $pstrigger dans $channel mais je ne suis pas
configuré pour y envoyer un message." }
}


proc talk { nick chan } {
global pschan pstrigger psanswer psmaniere
if { $psmaniere == "notice" } { putserv "notice $nick :$psanswer" }
if { $psmaniere == "privmsg" } { putserv "privmsg $nick :$psanswer"}
if { $psmaniere == "chan" } { putserv "privmsg $chan :$nick : $psanswer" }
if { $psmaniere != "notice" && $psmaniere != "privmsg" && $psmaniere
!= "chan" } { putlog "Erreur: Aucune bonne manière d'envoi n'est configuré."
} else { putlog "Parle script: Envoyé à $nick" }
}

proc call_talk { nick uhost hand chan arg } { pretalk $nick $chan }
code]


RE: Faire reagir le bot sur plusieur mot - atis91620 - 28/02/2011

Bonjour, essaye comme ceci :

Code :
set pstrigger "mot,mot1,mot2,etc"

ensuite a la place de
Code :
bind pub - $pstrigger call_talk

met ceci :

Code :
bind pub - "*" verif:call
proc verif:call { nick uhost handle channel arg } {
forach t [split $pstrigger ,] { if {[string match *[lrange $arg 0 end]* $t]} { call_talk } }



RE: Faire reagir le bot sur plusieur mot - NesCrex - 28/02/2011

Salut
thx de ta rep mec mais pour le mot 2 etc je veux pas qui répète "Non mais tu parle d'un langage toi!" je veux qui repete un autre truc
Merci Smile


RE: Faire reagir le bot sur plusieur mot - NesCrex - 01/03/2011

Up [Image: http://www.playthedownload.com/images/smilies/hap.gif]


RE: Faire reagir le bot sur plusieur mot - NesCrex - 03/03/2011

Pourquoi "octo" ? :v


RE: Faire reagir le bot sur plusieur mot - NesCrex - 03/03/2011

okep faut que je change
Code :
bind pub - $pstrigger call_talk

proc pretalk { target channel } {
global pschan psinchan pstrigger
if { $psinchan == "1" && $pschan == $channel } {
talk $target $channel
}
if { $psinchan == "2" } {
talk $target $channel
}
if { $psinchan == "1" && $pschan != $channel } {
putlog "J'ai détecté un $pstrigger dans $channel mais je ne suis pas
configuré pour y envoyer un message." }
}


proc talk { nick chan } {
global pschan pstrigger psanswer psmaniere
if { $psmaniere == "notice" } { putserv "notice $nick :$psanswer" }
if { $psmaniere == "privmsg" } { putserv "privmsg $nick :$psanswer"}
if { $psmaniere == "chan" } { putserv "privmsg $chan :$nick : $psanswer" }
if { $psmaniere != "notice" && $psmaniere != "privmsg" && $psmaniere
!= "chan" } { putlog "Erreur: Aucune bonne manière d'envoi n'est configuré."
} else { putlog "Parle script: Envoyé à $nick" }
}

proc call_talk { nick uhost hand chan arg } { pretalk $nick $chan }

Non ?


RE: Faire reagir le bot sur plusieur mot - NesCrex - 04/03/2011

Marche pas ton script :l


RE: Faire reagir le bot sur plusieur mot - CrazyCat - 04/03/2011

Vous cherchez un peu à réinventer la roue.
En gros, ce que tu veux, c'est plusieurs mots qui fassent réagir l'eggdrop, et qu'à chaque mot il y ait une réponse particulière ?
C'est exactement ce que fait Jokes.tcl, il suffit donc de l'adapter. Sinon, je suis à peu près certain qu'il existe des tcls du genre "badwords".


RE: Faire reagir le bot sur plusieur mot - djkenny - 04/03/2011

salut,

voila un petit code que j avais fait pour apprendre à coder à quelqu'un
tcl
namespace eval speak {
	# variable contenant les mots à reconnaitre
	# on pourras utiliser des wildchar * ?
	variable bonjour {salut bonjour slt coucou hello s*l*t}
	# variable contenant les réponses
	# on utilise %n pour pouvoir réécrire le pseudo plus tard
	variable reponse {"coucou %n comment ca va?" "bonjour %n" "salut %n" "wesh gros" "bienvenue %n"}
}
 
bind pubm - * speak::bonjour
 
proc speak::bonjour {nick host hand chan text} {
 
	# on déclare les variable bonjour et réponse
	variable bonjour
	variable reponse

	# on debug le texte et on met tout en minuscules
	set text [stripcodes abcru $text]
	set text [string tolower $text]

	# on test si on trouve le texte dans la variable bonjour
	if {[lsearch $bonjour $text] != -1} {
 
		# on remplace %n par le pseudo
		set rep [string map [list %n $nick] $reponse]

		# on choisi une réponse aléatoire
		set index [rand [llength $rep]]
		set rep [lindex $rep $index]

		# on envoi la réponse choisie
		putserv "PRIVMSG $chan :$rep"

	# on ferme les \} qu on a ouvert plus haut
	}
}





RE: Faire reagir le bot sur plusieur mot - NesCrex - 04/03/2011

Merci Very Happy


RE: Faire reagir le bot sur plusieur mot - djdu32 - 20/03/2011

Un petit up, tu peux utiliser une liste..

Code :
set mots {
"fuck"
"merde"
"encul"
}

bind pubm * msg:pub

proc msg:pub {nick uhost handle chan}{
set text [lindex $arg  0]
if {[string match *$mots* $text]=""} {
putserv "NOTICE $nick :Ce mot à été blacklisté."
} else { return 0 }
}



RE: Faire reagir le bot sur plusieur mot - djkenny - 20/03/2011

djdu32 a écrit :Un petit up, tu peux utiliser une liste..

Code :
set mots {
"fuck"
"merde"
"encul"
}

bind pubm * msg:pub

proc msg:pub {nick uhost handle chan}{
set text [lindex $arg  0]
if {[string match *$mots* $text]=""} {
putserv "NOTICE $nick :Ce mot à été blacklisté."
} else { return 0 }
}
7 erreurs sur 12 linges Mad c'est pas mal


RE: Faire reagir le bot sur plusieur mot - NesCrex - 20/03/2011

C'est en reconnaissant ses erreurs que l'on progresse djkenny :p


RE: Faire reagir le bot sur plusieur mot - djkenny - 20/03/2011

j vois pas trop l intérêt de poster du code remplis de bugs comme ca
ni celui de poster pour coller bêtement ma signature Wink


RE: Faire reagir le bot sur plusieur mot - djdu32 - 01/04/2011

Depuis le temps que je ne code plus,
L'aide est un besoin, pas obligé d'être sans fautes.

Donc tes commentaire je m'en passerai Smile