26/09/2012, 13:30
(Modification du message : 28/08/2013, 21:48 par MenzAgitat.)
Je mets ce script à votre disposition à la demande de certains mais je tiens à préciser certaines choses :
- Il s'agit d'une version alpha et son développement est actuellement interrompu (je m'y remettrai plus tard).
- Il reste des bugs, je le sais, il est donc inutile de me les rapporter.
- Je n'assurerai aucun support en cas de problème.
- Certaines fonctionnalités prévues manquent encore.
- La documentation est incomplète.
Ceci dit, je l'utilise depuis près de 3 ans et il fonctionne très bien chez moi donc vous devriez pouvoir en tirer quelque chose.
Si vous rencontrez des problèmes, vous pouvez toujours en discuter ici entre vous, peut-être que quelqu'un pourra vous apporter une aide quelconque.
Description
Basiquement, Responder est un système permettant à votre eggdrop de répondre certaines choses quand on en dit certaines autres, mais le résumer à ça serait restrictif.
Vous allez pouvoir par exemple apprendre à votre eggdrop à répondre quand on lui dit bonjour, et une multitude d'autres choses beaucoup plus excitantes que nous verrons plus loin avec quelques exemples.
Responder peut optionnellement utiliser un système appelé soundex pour effectuer une reconnaissance phonétique, ainsi les fautes d'orthographe ne le gênent aucunement.
Bien qu'il puisse fonctionner de façon autonome, ce script a été conçu pour fonctionner en coopération avec l'Interface Megahal (script du même auteur à télécharger séparément) qu'il complètera à merveille.
En utilisant conjointement ces deux scripts, l'Interface MegaHAL partagera sa configuration avec Responder et vous bénéficierez des fonctionnalités qu'elle apporte (pseudo-IA, délai d'activation, anti-flood avancé, possibilité de le faire taire temporairement en lui demandant, filtres ...)
Exemples
Citation :<MenzAgitat> .responder add #monchan salut_Boole salut %nick% -ET- tu vas bien ? -OU- hello
<Boole> Nouveau déclencheur ajouté sur #monchan : salut_boole. (100% de chances)
<MenzAgitat> salut Boole
<Boole> salut MenzAgitat
<Boole> tu vas bien ?
<MenzAgitat> salut Boole
<Boole> hello
Citation :<MenzAgitat> .responder add #monchan bon_anniversaire_%machin% /me %chan% se joint à %nick% pour souhaiter un bon anniversaire à %machin%
<Boole> Nouveau déclencheur ajouté sur #testchan : bon_anniversaire_%machin%. (100% de chances)
<MenzAgitat> bon anniversaire Joe
* Boole se joint à MenzAgitat pour souhaiter un bon anniversaire à Joe
Citation :<MenzAgitat> .responder add global !op -rate=25 /putserv MODE %chan% -o %nick% -ET- juste par esprit de contradiction
<Boole> Nouveau déclencheur global ajouté : !op. (25% de chances)
<MenzAgitat> !op
* Cronos applique le mode: +o MenzAgitat
* Boole applique le mode: -o MenzAgitat
<Boole> juste par esprit de contradiction
Citation :<MenzAgitat> .responder add #monchan tg_boole -rate=50 -nosoundex pff -OU- /putserv KICK %chan% %nick% stoi tg... -OU- /me %chan% ne dit plus rien -OU- /me %chan% boude -OU- /me %chan% fait la gueule -OU- je vois... -OU- ok -OU- -_- -OU- -OU- ... -OU- /me %chan% est vexé
<Boole> Nouveau déclencheur ajouté sur #monchan : tg_boole. (50% de chances)
<MenzAgitat> .responder add #monchan tg_%truc% -rate=50 -nosoundex ouais tais-toi un peu %truc%, tu saoûles -OU- %nick%> sois gentil avec %truc%
<Boole> Nouveau déclencheur ajouté sur #monchan : tg_%truc%. (50% de chances)
<MenzAgitat> tg Boole
<Boole> ok
<MenzAgitat> tg Joe
<Boole> ouais tais-toi un peu Joe, tu saoûles
Citation :<MenzAgitat> .responder add #monchan *_y'a_quelqu'un_* non et toi ?(Cet exemple utilise le soundex)
<Boole> Nouveau déclencheur ajouté sur #monchan : *_y'a_quelqu'un_*. (100% de chances)
<Joe> he ya kelkun ici ?
<Boole> non et toi ?
Syntaxe et utilisation
.responder on/off
Active/désactive Responder sur le chan en cours.
Cette commande ne fonctionne qu'en public; en partyline, vous devrez taper .chanset #monchan <+/->responder
.responder add <global/#chan> <ceci_est_un_déclencheur> [-nosoundex] [-nofilter] [-rate=<pourcentage_de_chances_de_déclenchement>] <réponse> [[-ET-/-OU- réponse] [...]]
Ajoute un nouveau déclencheur et sa/ses réponse(s) associée(s), ou ajoute une ou plusieurs réponses à un déclencheur existant.
-rate permet de définir le pourcentage de chances de déclenchement.
-nosoundex force Responder à ne pas utiliser le soundex pour ce déclencheur (en dépit de l'option use_soundex).
-nofilter force Responder à ne pas filtrer la ponctuation pour ce déclencheur (en dépit de l'option filter_punctuation).
Séparez plusieurs réponses par -ET- pour les lier ensemble, et Responder les affichera toutes les unes après les autres.
Séparez plusieurs réponses par -OU- et Responder choisira aléatoirement l'une ou l'autre.
Vous pouvez par exemple faire :
réponse1 -ET- réponse2 -ET- réponse3 -OU- réponse4 -ET- réponse5 -OU- réponse6
.responder del <global/#chan> <ceci_est_un_déclencheur> [réponse [[-ET- réponse] [...]]]
Efface une ou plusieurs réponses, ou efface le déclencheur si aucune réponse n'est spécifiée.
.responder show <global/#chan> <ceci_est_un_déclencheur>
Affiche les réponses associées à un déclencheur
.responder show <index>
Affiche l'index spécifié dans la base de données, déclencheur et réponses (Le 1er index de la base de données est 0)
.responder search <triggers/replies> <critères de recherche>
Effectue une recherche dans la base de données.
Spécifiez triggers pour chercher dans les déclencheurs, ou replies pour chercher dans les réponses.
.responder frequency <global/#chan> <déclencheur> [nouveau pourcentage de chances de déclenchement]
Affiche ou modifie le pourcentage de chances de déclenchement pour le déclencheur spécifié.
.responder nosoundex <global/#chan> <déclencheur> [on/off]
Affiche ou modifie l'état du paramètre "nosoundex" pour le déclencheur spécifié.
.responder nofilter <global/#chan> <déclencheur> [on/off]
Affiche ou modifie l'état du paramètre "nofilter" pour le déclencheur spécifié.
.responder priority <global/#chan> <déclencheur> [nouvel index]
Affiche ou modifie la priorité d'un déclencheur.
Les priorités commencent à partir de 0, 0 constituant la priorité la plus élevée. Par exemple, un déclencheur ayant une priorité de 2 sera prioritaire sur un autre ayant une priorité de 5.
Explication de la structure et du fonctionnement des déclencheurs
Notez que les espaces dans les déclencheurs doivent être remplacés par des "_"
Chaque "_" équivaut à un ou plusieurs espaces.
Un "_" peut remplacer un espace, mais aussi littéralement le caractère "_".
Exemples de déclencheurs :
*bot* correspondra également à "bot", mais aussi à "rabotage"
*_bot_* correspondra au mot "bot" sauf s'il est en début ou en fin de phrase
bot_* matchera le mot "bot" en début de phrase seulement
*_bot matchera le mot "bot" en fin de phrase seulement
un_test correspondra uniquement si quelqu'un dit précisément "un test" ou "un_test".
Les jokers "*" signifient "n'importe quoi, y compris rien".
L'utilisation des jokers * ne doit se faire qu'en début ou en fin de déclencheur, JAMAIS au milieu.
Vous pouvez utiliser | (pipe) en début ou fin de déclencheur pour signifier soit rien du tout, soit un ou plusieurs mots séparés du déclencheur par un espace.
Prenons par exemple le déclencheur |un_test| et faisons quelques essais de comparaison :
"blablaun testblabla" -> ne correspond pas
"blabla un test blabla" -> correspond
"un test" -> correspond
Avec le déclencheur *_un_test_* :
"blablaun testblabla" -> ne correspond pas
"blabla un test blabla" -> correspond
"un test" -> ne correspond pas
Avec le déclencheur un_test :
"blablaun testblabla" -> ne correspond pas
"blabla un test blabla" -> ne correspond pas
"un test" -> correspond
Lorsque vous ajoutez des réponses comme ceci :
a -ET- b -OU- c -ET- d -ET- e -OU- f
Responder groupe automatiquement les conditions de cette façon :
(a -ET- b) -OU- (c -ET- d -ET- e) -OU- (f)
Les -ET- sont liants et vous devez ajouter d'un seul coup toutes les réponses liées par un -ET-.
De même, pour supprimer une réponse comportant un -ET-, vous devez supprimer la réponse ainsi que tous ses liens en une seule fois.
Dans l'exemple (a -ET- b) -OU- (c -ET- d -ET- e) -OU- (f), si vous voulez supprimer la réponse d, vous devez supprimer c -ET- d -ET- e. Libre à vous de rajouter c -ET- e ensuite.
Il n'est pas possible de supprimer plusieurs réponses alternatives (séparées par un -OU-) en une seule fois; vous devrez les supprimer une par une.
Il est possible de supprimer totalement un déclencheur en omettant de spécifier la réponse à supprimer.
Le pourcentage de chances de déclenchement est fixé par défaut à 100%, sauf si vous le spécifiez autrement. Si vous ne le spécifiez pas en ajoutant une nouvelle réponse à un déclencheur déjà existant, il conserve sa valeur précédente.
Variables supportées dans les réponses
%nick%
Le nick de la personne à qui le bot répond.
%hand%
Le handle de la personne à qui le bot répond.
%host%
L'ident@host de la personne à qui le bot répond.
%chan%
Le chan sur lequel le bot répond.
%botnick%
Le nick actuel du bot.
%randnick%
Sera remplacé par un nick pris aléatoirement sur le chan.
Si vous utilisez 3 fois la variable %randnick% dans une même réponse, elle sera remplacée par 3 nicks différents.
%altrandnick%
Sera remplacé par un nick pris aléatoirement sur le chan et ne pouvant pas être le nick de celui qui a déclenché la réponse.
Si vous utilisez 3 fois la variable %altrandnick% dans une même réponse, elle sera remplacée par 3 nicks différents.
%randnick<index>%
Sera remplacé par un nick pris aléatoirement sur le chan.
Si vous utilisez 3 fois la variable %randnick<index>% dans une même réponse, elle sera remplacée par 3 fois le même nick si l'index est identique. L'index est une valeur numérique arbitraire.
Voici un exemple qui vous permettra de mieux comprendre :
Citation :%randnick1%, je te présente %randnick2%; réciproquement, %randnick2% je te présente %randnick1%.
-> Pierre, je te présente Paul; réciproquement, Paul je te présente Pierre.
Vous pouvez également définir des variables personnalisées depuis le déclencheur. Vous pouvez donner à ces variables le nom que vous voulez, tant qu'il ne fait pas partie des noms de variables réservés (c'est à dire les variables que je viens d'énumérer ci-dessus).
Imaginons par exemple que j'aie défini un déclencheur "coucou_%mavariable%" et que la réponse soit "%nick% vient de saluer %mavariable%".
Si je dis "coucou machin", le bot répondra "MenzAgitat vient de saluer machin"
Commandes supportées dans les réponses
/putserv <commande RAW à envoyer au serveur>
Exemple : /putserv kick #monchan Machin raison du kick
Pour plus d'informations, consultez http://www.faqs.org/rfcs/rfc1459.html
/notice <nick/#chan> <texte>
/msg <nick/#chan> <texte>
/me <nick/#chan> <texte>
Quelques précisions
Variables personnalisées
Vous ne devez utiliser que des caractères alphanumériques dans le nom de vos variables personnalisées.
Vous ne devez pas les coller à un mot comme par exemple "coucou%mavariable%".
Une variable personnalisée ne capture qu'un seul mot.
Il est déconseillé de coller plusieurs variables personnalisées ensemble comme par exemple "coucou_%truc%_%machin%", même si dans la plupart des cas ça ne devrait pas poser de problèmes.
Les variables personnalisées sont les seules que vous pouvez utiliser dans le déclencheur.
Recherches
Les recherches effectuées au moyen de .responder search filtrent les caractères accentués; vous pouvez donc indifféremment les utiliser ou non.
De même, les caractères accentués sont ignorés dans les déclencheurs et Responder réagira de la même manière avec ou sans accents.
Si vous effectuez une recherche retournant plusieurs résultats au moyen de la commande publique, une liste d'index vous sera affichée plutôt que l'intégralité des réponses afin d'éviter le flood. Vous pouvez ensuite utiliser la commande .responder show <index> pour afficher les résultats.
Si vous effectuez cette même recherche au moyen de la commande dcc, vous obtiendrez directement tous les résultats car le flood en partyline n'est pas gênant.
Option dont_stop_on_first_match
Si l'option dont_stop_on_first_match (voir section configuration) est désactivée et si plusieurs déclencheurs différents correspondent à une même ligne de texte, Responder choisira le premier sur lequel il tombera dans sa base de données, c'est à dire celui qui a été ajouté en premier. L'ordre dans lequel vous ajoutez les déclencheurs est donc extrêmement important.
En revanche, si l'option dont_stop_on_first_match est activée, il traitera tous les déclencheurs correspondants les uns après les autres, toujours par ordre chronologique d'ajout dans la base de données.
Notez que vous pouvez changer l'ordre de priorité des déclencheurs au moyen de la commande .responder priority
Changelog
pas de changelog pour les versions alpha
Téléchargement
Responder v1.0.a1