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


[Script] Responder (version actuelle : 1.0.a1 (alpha))
#1
 
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

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

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

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

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

Quote:<MenzAgitat> .responder add #monchan *_y'a_quelqu'un_* non et toi ?
<Boole> Nouveau déclencheur ajouté sur #monchan : *_y'a_quelqu'un_*. (100% de chances)
<Joe> he ya kelkun ici ?
<Boole> non et toi ?
(Cet exemple utilise le soundex)


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 :
Quote:%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
 
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#2
Ah c'est ce tcl la x)

Je l'ai déja lol :p
Mais il et bien comme tcl c'est clair :)
#3
Hello ,first, sorry for not being able to write in french, after is it possible to add a function so that the bot will reply to nicknames who are on channel and only where the script is enabled (also with an antiflood trigger which will ignore the user for 1 minute or more *changeable*) in private messages not just on channels? For example:
In private: <nickname> Hello
In private: <bot> hello nickname
....... : <nickname> How r u?
....... : <bot> just fine, how about u?

Thank you if this could be added to this script.
#4
The bot can actually reuse his interlocutor nickname, or random nickname chosen among users that are connected to the channel; take a look at the variables like %nick% or %randnick%.

It is not planned to allow responder in private messages. The purpose of this script is to animate IRC channels, not to provide private enjoyment to shy or asocial users :p
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#5
Thank you for the quick reply, i'm already using this script, and i know about those variables and saw how it works pretty good with them :) , i just hoped if there was a way to add private replies also amoung with the public ones who has now. Anyway thank you again and keep up the good work. Great and usefull scripts.


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Script (Release Alpha)] ClaraServ / IRCServices ZarTek 5 432 28/08/2022, 07:18
Last Post: ZarTek
  Motus (version actuelle : 3.357) MenzAgitat 485 65,086 05/06/2022, 18:45
Last Post: MenzAgitat
  [Script] Interface MegaHAL (version actuelle : 4.1.0) MenzAgitat 191 91,164 29/05/2022, 20:42
Last Post: berni13
  [Script] MediaDico (version actuelle : 3.126) MenzAgitat 35 31,324 29/05/2022, 18:52
Last Post: MenzAgitat
  Live Bug Tracer (version actuelle : 2.0) MenzAgitat 6 4,904 18/04/2022, 00:43
Last Post: CrazyCat
  [Script] Duck Hunt (version actuelle : 2.11) MenzAgitat 68 27,901 24/10/2021, 01:04
Last Post: LTEF
  conversion 0.1a (version alpha) CrazyCat 2 373 20/08/2021, 17:47
Last Post: ComputerTech
  [Script] Reanimator (version actuelle : 1.2) MenzAgitat 31 19,520 10/10/2020, 16:07
Last Post: ZarTek
  [Script] Topic Warden (version actuelle : 1.54) MenzAgitat 23 19,421 10/10/2020, 15:51
Last Post: ZarTek
  [Script] Automatic Translator (version actuelle : 1.1) MenzAgitat 11 8,816 18/09/2020, 15:21
Last Post: MenzAgitat

Forum Jump:


Users browsing this thread: 1 Guest(s)