Communauté Eggdrop
Faire reagir le bot sur plusieur mot - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et scripts (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts (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 :)
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 :)


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 :D


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 :x 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 ;)


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 :)