Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Recherche code tcl ou un dèja fait
#1
Bonjour all :)
Je suis a la recherche d'un code tcl pour eggdrop qui aurait pour but de répondre si on lui adresse la parole sur un salon.

Voila j'ai cherché un bot I.A mais je n'est rien trouvé :/

En faite je voudrait un petit code comme cette exemple :

Quote:Nick Bonjour pseudo
Bot Coucou nick
Nick pseudo on ne se connais pas ?
Bot je ne pense pas nick etc..

Sois en phrase direct sois qu'il va cherché les réponses dans un fichier txt

Merci par avance de votre aide.

Cordialement Stéphane
hésitez pas de visité http://www.tchat-fusion.org/
ou part irc /server -m irc.tchat-fusion.org
#2
Bonjour,
sur le forum recherche "megahal" c'est un I.A qui répond à son pseudo et au phrases lorsqu'on parle.
Bien sur il à un apprentissage pour apprendre tout cela mais essaye le peut-être que ceci te conviendra :)
#3
Bonjour alias_angelius,
Merci ;) pour le tuto :)
j'avais déja vue cette source je n'est pas su le faire fonctionné lol je pense surtout que je ne suis pas arrivé a l'installer correctement ou a le manipulé,
Voila pourquoi je demande un code simple car j'ai aussi trouvé parlescript.tcl
seule souci c'est que je ne trouve pas comment lui mettre plusieurs mots ou phrase et comme le faire aller cherché dans des fichier txt.

Pour le code ci-dessous tu dit un mot il répond à la phrase que tu lui a dit mais si tu multiplie la variable bah la y a des erreurs AFfff


Code:
# Le mot auquel le bot va réagir:
set pstrigger "Bonjour $me"
set pstrigger "bonne nuit $me"

# Ce que le bot va répondre
# (vous pouvez y mettre de la couleur)
set psanswer "coucou $nick"
set psanswer "Merci $nick à toi aussi repose toi bien"
Voici le code complet au cas ou :)


Code:
##########################################
############## Explications ##############
##########################################

# Parle-Script par Pontiac6000
#
# Ce script sert à faire parler votre bot automatiquement
# grâce à un mot (trigger).
#
# Il est configurable, voir la section CONFIGURATION.
#
# Voici à quoi il peut servir:
# Quand un user dit : !aide
# Le bot va répondre : Désolé, mais le canal d'aide est #services
#
# Comme je le dis, ceci est un exemple. Les triggers sont
# changeables et les réponses aussi. Vous aurez aussi la
# possibilité de décider si le bot va répondre en Notice,
# Privé ou sur le chan.
#
# Ce bot peut servir aussi à la publicité, comme faire de
# la pub sur Undernet.
# Ex: Quand quelqu'un dit @find blablabla sur un chan,
# le bot réagit à @find
# et il peut répondre: "Allo, je me nomme Isabelle, etc."
# de la manière que vous aller préciser ci-dessous.
#
# Faites-en bon usage!

##############################################
############### Configuration ################
##############################################

# 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 }

putlog "Parle-Script par Pontiac6000 chargé."

###################################################
################## Fin du script ##################
###################################################

alias_angelius Wrote:Bonjour,
sur le forum recherche "megahal" c'est un I.A qui répond à son pseudo et au phrases lorsqu'on parle.
Bien sur il à un apprentissage pour apprendre tout cela mais essaye le peut-être que ceci te conviendra :)

Cordialement Stéphane
hésitez pas de visité http://www.tchat-fusion.org/
ou part irc /server -m irc.tchat-fusion.org
#4
Bonjour,

Par curiosité pourrait-tu mettre le script dans ton bot essaye le et dit moi si en PL de ton bot tu as une erreur avec le script parlemoi...

Et si tu as une erreur tape ceci ensuite : .set errorInfo
Car je viens de voir une chose dedans qui pour moi n'es pas vraiment très clair et je pense que c'est du à ça que sa fonctionne pas.
#5
Bonjour alias_angelius,
Merci beaucoup de ton aide :)
J'ai taper se que tu ma dit sous putty et en ctcp chat.
Je ne voie aucune erreur a par que sa ne fonctionne pas :/

Quote:Quand je lance avec putty :

Eggdrop v1.6.19+ctcpfix © 1997 Robey Pointer © 2008 Eggheads
[17:29] --- Loading eggdrop v1.6.19+ctcpfix (Sun Jun 5 2011)
[17:29] Module loaded: dns
[17:29] Module loaded: channels
[17:29] Module loaded: server
[17:29] Module loaded: ctcp
[17:29] Module loaded: irc
[17:29] Module loaded: console (with lang support)
[17:29] Module loaded: blowfish
[17:29] Listening at telnet port 3339 (all).
[17:29] Nauth 2.1 by TiSmA©
[17:29] Parle-Script par Pontiac6000 chargé.
[17:29] Userfile loaded, unpacking...
[17:29] === Coyote-Gi: 8 channels, 1 users.
Launched into the background (pid: 32079)

Moncompte@server ~/shell/user $ .set errorInfo
-bash: .set: command not found
Moncompte@server ~/shell/user $


En ctcp chat eggdrop :

[17:33] <Coyote-Girls> Hey snip74! My name is Coyote-Gi and I am running eggdrop v1.6.19+ctcpfix, on Linux 2.6.34.6-xxxx-grs-ipv6-32.
[17:33] <Coyote-Girls>
[17:33] <Coyote-Girls> Local time is now 17:32
[17:33] <Coyote-Girls> You are an owner of this bot. Only +n users can see this! For more info,
[17:33] <Coyote-Girls> see .help set motd. Please edit the motd file in your bot's 'text'
[17:33] <Coyote-Girls> directory.
[17:33] <Coyote-Girls> Use .help for basic help.
[17:33] <Coyote-Girls> Use .help <command> for help on a specific command.
[17:33] <Coyote-Girls> Use .help all to get a full command list.
[17:33] <Coyote-Girls> Use .help *somestring* to list any help texts containing "somestring".
[17:33] <Coyote-Girls>
[17:33] <Coyote-Girls> Have fun.
[17:33] <Coyote-Girls>
[17:33] <Coyote-Girls> Commands start with '.' (like '.quit' or '.help')
[17:33] <Coyote-Girls> Everything else goes out to the party line.
[17:33] <Coyote-Girls>
[17:33] <Coyote-Girls> *** snip74 joined the party line.
[17:33] <snip74> .rehash
[17:33] <Coyote-Girls> [17:32] #snip74# rehash
[17:33] <Coyote-Girls> Rehashing.
[17:33] <Coyote-Girls> [17:32] Rehashing ...
[17:33] <Coyote-Girls> [17:32] Listening at telnet port 3339 (all).
[17:33] <Coyote-Girls> [17:32] Nauth 2.1 by TiSmA©
[17:33] <Coyote-Girls> [17:32] Parle-Script par Pontiac6000 chargé.
[17:33] <Coyote-Girls> [17:32] Userfile loaded, unpacking...
[17:33] <snip74> .set errorInfo
[17:33] <Coyote-Girls> [17:32] #snip74# set errorInfo
[17:33] <Coyote-Girls> Currently:

Par contre avec le script original salon #chat quand je dit le mot fuck sa marche pas :/

2[17:36] Serge» 1fuck
2[17:36] Serge» 1teste fuck


alias_angelius Wrote:Par curiosité pourrait-tu mettre le script dans ton bot essaye le et dit moi si en PL de ton bot tu as une erreur avec le script parlemoi...

Et si tu as une erreur tape ceci ensuite : .set errorInfo
Car je viens de voir une chose dedans qui pour moi n'es pas vraiment très clair et je pense que c'est du à ça que sa fonctionne pas.

Cordialement Stéphane
hésitez pas de visité http://www.tchat-fusion.org/
ou part irc /server -m irc.tchat-fusion.org
#6
ok bah je testerai demain le tcl voir la aujourd'hui je peux pas.
#7
rheuuu alias_angelius
Ok pas de souci merci beaucoup :)

Cordialement Stéphane

alias_angelius Wrote:ok bah je testerai demain le tcl voir la aujourd'hui je peux pas.
hésitez pas de visité http://www.tchat-fusion.org/
ou part irc /server -m irc.tchat-fusion.org
#8
Salut,

Donc j'ai testé ton code et oui en effet il ne fonctionne pas.

Alors par curiosité j'ai cherché sur le forum et le code que tu à mis dans le post et sur un autre post et un membre du forum "djkenny" avait donné un exemple de code tcl sous forme de namespace donc autant utilise ceci car il et expliquer et tout.

Donc je vais te c/c le code que djkenny avait fait :


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

#9
Bonjour alias_angelius,
Cool merci pour cette source je vais la testé :p
Juste un truc que je pense qu'il va y avoir des erreur si je mais plusieur variable non ?
je connais pas le tcl mais en se moment je regarde pas mal de tuto :) malgré que j'ai du mal a comprendre le tcl et plus dur que le mirc lol

exemple :

Code:
namespace eval speak {
   # variable contenant les mots à reconnaitre
   # on pourras utiliser des wildchar * ?
   variable bonjour {salut bonjour slt coucou hello s*l*t}
   variable nuit {Bonsoir 'Bonne nuit' 'a demain'}
   # 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} {
proc speak::nuit {nick host hand chan text} {

   # on déclare les variable bonjour et réponse
   variable bonjour
   variable nuit
   variable reponse
alias_angelius Wrote:Salut,

Donc j'ai testé ton code et oui en effet il ne fonctionne pas.

Alors par curiosité j'ai cherché sur le forum et le code que tu à mis dans le post et sur un autre post et un membre du forum "djkenny" avait donné un exemple de code tcl sous forme de namespace donc autant utilise ceci car il et expliquer et tout.

Donc je vais te c/c le code que djkenny avait fait :


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

Cordialement Stéphane
hésitez pas de visité http://www.tchat-fusion.org/
ou part irc /server -m irc.tchat-fusion.org
#10
plusieurs variables c'est à dire précise en donnant un exemple
#11
juste au passage,sont jeu "oui non" est baser sur ce même code.. donc il risque peut être d'y avoir conflit non ?

poste ici:
Oui Non

Cordialement
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.
#12
Oui en effet donc faudrait appeler le namespace/procedure autrement car sa risque de faire conflit.
Étant donner qu'il utilisera deux namespace du même nom donc ça ne va pas trop le faire :x


Possibly Related Threads…
Thread Author Replies Views Last Post
  Commenter des lignes de code TCL fait tout bug.. aliasangelius 2 3,875 05/09/2012, 11:54
Last Post: aliasangelius
  eggdrop le bot ne fait rien mamouth 35 19,162 23/05/2011, 08:51
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)