SECTION
III : Construire le Robot
Rubrique
I : Matériaux généraux sur la création
Trois grands matériaux vont vous aider : les variables, les popup,
et les remotes. Quelquefois la partie Users peut vous aider pour enregistrer
les utilisateurs du Bot, mais il vaut mieux écrire toutes ces données dans
un document .txt pour que ce soit plus clair.
Les variables sont indispensables, vous pourrez enregistrer des données
importantes et courtes, telles que le pseudo du Bot par défaut, le pseudo
de l’owner, des nombres (par exemple des niveaux d’access, des compteurs,
etc.).
Les popup vous permettent de mettre en place la configuration du Menu
Bar par exemple. Vous pouvez ne pas mettre grand’ chose dans votre Menu
Bar si vous prévoyez de faire des modules de configuration sous forme
de dialogs, mais pour appeler ces dialogs vous pouvez mettre ça dans vos Popup.
Par exemple :
|- Menu -|
.Module de configuration:.dialog –m Menu Menu*
.-
.Module de gestion d’access:.dialog –m Access Access*
*Si vous avez appelé vos dialogs
ainsi.
Les remotes sont plusieurs ou un seul
fichier selon la taille de vos codes ou les parties que vous souhaiterez leur
attribuer. C’est l’essence même de votre Bot et c’est là où vous devrez concentrer
vos efforts. Dans ces remotes voici les évènements principaux qui vous seront
sans doute utiles :
On Text :
On <niveau>:TEXT:<texte réel>:<lieu où le texte apparaît>:
{ commandes }
Par exemple vous souhaitez créer une fermeture automatique
du message privé :
On *:TEXT:*:?:
.timer 1 2 /closemsg
Le premier * revoie à tous les types d’utilisateurs, le second
* revoie à tous les textes qui seront envoyés en privé, le ? revoie au
message privé lui-même (lieu où le texte sera envoyé), le timer permet d’attendre
un lapse de temps (en l’occurrence deux secondes ici) avant que le message
se ferme de lui-même, les /closemsg est la commande effective qui permet de
fermer tous les messages envoyés en privé.
Par exemple vous voulez que le Robot réagisse à un mot ou
à une commande lancée sur un salon :
On *:TEXT:!op:#: {
If (($me isop #) && ($nick isin %accessop)) .mode # +o $nick
}
Le déclencheur de l’action est
le texte « !op » il s’exécute sur # (qui symbolise tous
les canaux où le Robot sera présent), la condition ne s’exécute que si le
Bot est Op sur le canal et que si le pseudo de la personne qui tape cette
commande fait partie de la liste d’access telle qu’elle apparaît dans la variables
%accessop, ensuite si les deux conditions sont respectées la personne sera
oppée sur le canal actif par le Bot là où elle aura tapé la commande.
On Connect :
On <niveau>:CONNECT: { commandes }
Cet évènement vous
permettra de lister toutes les actions que le Bot devra exécuter une fois
connecté. Par exemple vous souhaitez que le Robot joigne automatiquement les
canaux enregistrés :
On *:CONNECT: {
.j %canal1 | .j %canal2 | .j
%canal3
}
Ici le Bot joindra automatiquement les canaux enregistrés
dans les variables %canal1, %canal2, %canal3.
On Kick :
On <niveau>:KICK:<canal>: { commandes }
Cet évènement permet au Robot de rebondir sur un Kick en exécutant
un autre évènement. Les évènements BAN, OP, DEOP, VOICE, DEVOICE, HELP, DEHELP,
TOPIC, permettent aussi d’exécuter des commandes lorsqu’ils apparaissent sur
le canal spécifié, de plus ils ont la même syntaxe que le On Kick. Par exemple
vous voulez que l’owner soit vengé d’un kick de la part d’un Op :
On *:KICK:%canal1: {
If (($me isop %canal1) && ($knick == %owner)) {
.mode %canal1 –o $nick
.kick %canal1 $nick [Vous n’avez
pas à kicker cet utilisateur !]
If (%owner isin %canal1) {
.mode %canal1 +o %owner
Else .timer 2 2 /mode %canal1 +o %owner
} } }
Cette remote kick du canal spécifié
dans la variable %canal1 la personne qui a kické l’owner spécifié dans la
variable %owner et réop l’owner en cas de rejoin automatique du canal après
le kick sinon toutes les deux secondes et à deux reprises le Bot tentera de
mettre le mode +o sur l’owner si il est sur le %canal1.
Voilà quels sont les trois types d’évènements
importants que vous aurez sans doute l’occasion d’utiliser.
Prenons un exemple simple qui vous
permettra d’intégrer des variables dans vos remotes et de les réutiliser par
la suite. Admettons que vous souhaitez enregistrer un nouveau canal avec pseudo
de l’owner, description du canal et mot de passe et que vous êtes l’administrateur
du bot.
On *:TEXT:REGISTER:?: {
If ($nick == %Admin) {
.set $$1 %canal1
.set $2 %owner1
.set $3 %passowner1
.set $4- %description
Else .msg $nick Vous n’êtes
pas autorisé à utiliser cette commande | halt
} }
La commande va enregistrer les données envoyées par l’administrateur
du Robot défini dans la variable %Admin sous la syntaxe /msg <pseudo du
Robot> REGISTER #<canal> <pseudo de l’owner> <son mot de
passe> <sa description> si la personne n’est pas l’admin le Bot lui
renverra un message d’erreur.
Vous voilà maintenant prêts à construire
votre premier Robot.
Rubrique
II : Scripting et Méthodes
Tout d’abord commençons par prendre
un exemple de dialog. Un dialog est une boîte, une fenêtre que vous pouvez
intégrer dans mIRC et qui peut exécuter des commandes, assigner des variables,
etc.
Voici l’exemple de la construction
d’une boîte de dialog que j’ai fait pour un Robot que j’ai appelé Hadès :
Construction pure et simple
Dialog Configuration {
Title " [ .:. Gestion
& Configuration de Hadès Version 1.0 .:. ]"
Size -1 -1
550 600
Icon 1, -1 -1 551 601, Themes\config.jpg,
top
Box "[Veuillez configurer Hadès
en entrant les données qui vous sont demandées]
[Touche raccourci F1]",2,3 90 543 80
Text ".:. Pseudo
du Robot .:.",3,15 115 120 20
Edit "",4,140
112 110 20
Text ".:. Deuxième
pseudo du bot .:.",5,265 115 160 35
Edit "",6,420
112 110 20
Text ".:. Pseudo du Master
.:.",7,15 140 120 35
Edit "",8,140 137 120
20
Text ".:. Votre Password .:.",9,265 140 110 35
Edit "",10,420
137 100 20,pass
Box "[Paramètres du Robot]",11,3 175 543 110
Text ".:.
Protection Anti-Flood .:.",12,15 200 135 35
Check "",13,160 197 20
18, right
Text "[On/Off]",14,180
200 60 35
Check ".:. Hadès
utilisé par tous les chatteurs .:.",15,265 197
220 20, left
Text "[On/Off]",16,490
200 60 35
Text ".:. Modes du robots
.:.",17,15 225 120 35
Check "+i (invisible)",18,140
222 75 20,right
Check "+x (host masqué)",19,225
222 110 20,right
Check "+z (secure connexion)",20,337
222 125 20,right
Check "+b (bot)",21,472
222 100 20,right
Text ".:. ColorStyle Texte du Robot .:.",22,15 252 165 35
Radio "Bleu",23,185 249
40 20,push,group
Radio "Rouge",24,236
249 48 20,push
Radio "Gris",25,296 249
40 20,push
Radio "Vert",26,347 249
40 20,push
Radio "Marron",27,398
249 50 20,push
Radio "Aucune",28,460
249 60 20,push
Box "[Gestion du Robot et des scripts]",29,3
292 543 200
Box "[Crédits]",36,3
498 543 97
Link "http://www.magician-mIRC.fr.st",30,400
579 200 20
Text "Module de Gestion de Hadès© conçu
par Nessy",31,315 565 250 15
Text ".:. Effacer
tous les logs .:.",32,15 317 150 20
Check "Ok",33,162
315 30 20
Text ".:. Remettre
les stats à 0 .:.",34,265 317 150 20
Check "Ok",35,423
315 30 20
Text ".:. Réinitialiser
la base de données concernant les différents access bot/users .:.",37,15 345 390 20
Check "Valider",38,423
343 100 20
Text ".:. Niveau
de Lamering* .:.",39,15
375 150 20
List 40,162 372 200 80
Text "*Cette liste vous permet d'évaluer
la",41,365 372 200 15
Text "'méchanceté' des 'délits' que le
Robot",42,370 385 200 15
Text "va commettre pour vous =D.",43,370 398 200 15
Text ".:. Reconnaissance
entre les Hades² .:.",44,15 440 200 15
Radio "Activer",45,215
437 50 20,group
Radio "Désactiver",46,275
437 70 20
Button "Annuler",47,310
520 70 20,cancel
Button "Initialiser",48,390
520 70 20
Button "Enregistrer",49,470
520 70 20
Icon 50,7 536 50 50, Themes\slurp.jpg
Text "[Menu Accessible aussi via
la touche .:F1:.]",51,334 550 220 15
Text ".:. Serveur
sur lequel Hades va opérer .:.",52,15 465 200
15
Edit "",53,225
462 310 20
Text "Hades est un Lamer Bot qui fait tout
ce qui",54,80 520 220 15
Text "vous est interdit de faire sur un
serveur IRC!",55,70 535 220 15
Text "Spam,
Floodnotice, Take-Over, Flood msg, et",56,70 550 240 15
Text "Dns Site Ip Adresses, Quotes,
etc.",57,70 565 220 15
}
Aspect initial selon les valeurs
des variables
On *:DIALOG:Configuration:init:*:
{
if (!%botnick) did -ra Configuration
4 (Entrez un nick)
else did -ra Configuration 4 %botnick
if (!%botnick2) did -ra Configuration
6 (Pseudo alternatif)
else did -ra Configuration 6 %botnick2
if (!%owner) did -ra Configuration
8 (Votre Nick)
else did -ra Configuration 8 %owner
if (%password != $null) did -ra
Configuration 10 %password
did -a Configuration 40 Options
Attaques Zéro
did -a Configuration 40 Options
Attaques Réduites
did -a Configuration 40 Options
Attaques Normales
did -a Configuration 40 Options
Attaques Elevées
if (!%server) did -ra
Configuration 53 Adresse du serveur sans /server devant exemple: irc.voila.fr
else did -ra Configuration
53 %server
if (%Attaques == 0)
did -c Configuration 40 Options Attaques Zéro
}
On *:DIALOG:Configuration:sclick:40:
{
if ($did(Configuration,40,1).seltext
== Options Attaques Zéro) set %Attaques 0
if ($did(Configuration,40,2).seltext
== Options Attaques Réduites) set %Attaques 1
if ($did(Configuration,40,3).seltext
== Options Attaques Normales) set %Attaques 2
if ($did(Configuration,40,4).seltext
== Options Attaques Elevées) set %Attaques 3
}
Etc.
Maintenant regardez le résultat,
vous comprendrez par vous-même comment créer votre propre boîte de dialog.
Voilà, je n’ai pas pris l’exemple de
dialog le plus simple mais celui-ci regroupe un peu tout ce que vous pouvez
faire sous mIRC et sans .dll. Il faut se mettre en tête qu’un dialog comme
celui-ci représente à peu prêt deux ou trois heures de boulot rien que dans
sa conception graphique, le reste, notamment le traitement des données est
pire encore puisqu’il vous faudra tester chaque parcelle de vos codes, en
faire de très longs, et parfois vous planter et tout recommencer.
De plus l’exemple est mauvais puisqu’il
s’agit d’un Bot qui doit se charger de spammer et de flooder sur un serveur
=). Et faire un dialog aussi énorme est déconseillé pour la bonne raison qu’il
n’est pas très pratique, mieux vaut le faire en plusieurs parties.
Concernant les méthodes de scripting
il suffit que vous soyez très rigoureux et normalement tout devrait bien fonctionner.
N’hésitez pas à enregistrer vos codes avec des noms de fichiers multiples
pour vous y retrouver plus facilement. Travaillez bout à bout et évitez de
commencer quinze choses à la fois (débuter un dialog, ensuite faire un groupe
d’alias, puis commencer des remotes qui n’ont rien à voir avec le dialog),
c’est le meilleur moyen pour n’en finir aucune.
A propos des alias. Vous avez la possibilité
de réduire considérablement vos longues commandes avec des alias qui sont
en fait des raccourcis.
Au lieu d’écrire 20 fois les mêmes
codes longs vous pouvez l’écrire une fois pour toutes dans vos alias sous
la forme :
/<raccourci>
{
<commandes
exécutées>
}
Par exemple si vous souhaitez que le
Bot déop la personne qui vous a banni, le kickban, vous deban, vous invite,
et vous réop vous pouvez faire :
/furie {
.set %banowner $bnick
.mode $chan –o $nick
.msg $chan $nick L’heure de
la vengeance vient de sonner !
.mode $chan +b $address($nick,2)
.kick $chan $nick Ainsi parla
le Dieu $me $+ , $knick l’a appris à ses dépends
.mode $chan –b %banowner
.invite %banowner $chan
.timer 1 5 /mode $chan +o %banowner
.timer 1 6 /msg $chan %banowner $+ , te voilà vengé =]
.unset %banowner
}
Voilà les nombreuses lignes de codes que vous éviterez de
retaper en utilisant seulement la commande /furie.
Vous êtes maintenant bien renseigné
nous allons voir maintenant comment rendre vos évènements crédibles, vous
économiserez ainsi, peut être, du temps.
Rubrique
III : Coïncidence des évènements et crédibilité
Afin d’éviter les mauvaises surprises,
évitez d’écrire deux fois le même code, sinon les commandes s’exécuteront
deux fois, ça peut sembler crétin comme remarque mais il arrive parfois que
l’on écrive deux fois les mêmes choses sans s’en rendre compte ou pour être
sûr qu’une des deux fonctionne. De plus lors des évènements On Text préférez
l’écriture des répliques du Robots (si vous en prévoyez) sur un document .txt.
Nous allons voir un exemple simple de lecture aléatoire d’une réplique que
le Bot lancera en appelant le fichier .txt que vous créez.
Par exemple si vous souhaitez
que le Bot lance une réflexion aléatoire sur le canal actif lors d’un opage :
On *:OP:#: {
.msg $chan $read –smirc Op.txt
}
Vous devez écrire les répliques
dans le fichier Op.txt qui se situera dans le même répertoire de mIRC.exe
sinon vous devez spécifier le chemin d’accès du fichier.
Vous pouvez aussi ordonner l’écriture de données lourdes ou
nombreuses sur un fichier .txt pour éviter de surcharger les variables avec
la commande write <fichier>.txt <donnée(s) à insérer>.
Enfin, notez bien que vous pouvez parfois
arriver aux mêmes résultats avec des codes complètement différents, le tout
c’est d’y arriver et si possible, avec le moins de codes et le moins de variables
à faire travailler pour éviter d’engorger le scripts de variables inutiles
et qu’il fasse des opérations trop complexes si plus simple est possible.
Pour que votre Bot soit crédible il faut qu’il soit le plus rapide possible
pour exécuter les tâches simples, qu’il ne soit pas bourré de bugs et de fautes
d’orthographe, et qu’il soit le plus intuitif possible pour les personnes
qui voudront l’utiliser.
Prenez le temps de bien travailler
sur la configuration du Bot, il faut que toutes ses fonctions soient accessibles
le plus rapidement possible par l’utilisateur. Ainsi, il vous faudra parfois
viser plus l’efficacité que le superflu.
Vous avez maintenant conçu le Robot
de vos rêves, mais tout n’est pas encore terminé.
Rubrique
IV : Finalisation de la conception
Voici quelques conseils pour la route
pour bien clôturer tout ça. Vous êtes à deux doigts de la gloire et il vous
reste encore un peu de temps pour faire dans le détail ?
Vous pouvez alors par exemple améliorer
le design de votre Bot. Par exemple en utilisant l’évènement On Start vous
pouvez vous faire une présentation sympa que l’utilisateur verra à chaque
lancement du Robot.
Vous voulez qu’un message s’affiche dans la barre de status
du Bot lors du lancement avec le nombre de fois que le script a été lancé
et lancer un dialog de configuration si le script est lancé pour la première
fois, ce qui va permettre à l’utilisateur de configurer les options nécessaires
au bon fonctionnement du Bot.
On *:START: {
if (%utilisation == $null) {
echo -s 5
.:.
Bonjour à toi ! Tu viens de télécharger <nom du bot>
et tu le lances pour la
première fois
!!
.:.
echo -s 0 -
echo -s 5
.:.
Concernant les détails et le fonctionnement du bot n'hésites pas à
lire le
Lisez-moi.txt
il a été créé pour ça
.:.
echo -s 0 -
echo -s 5
.:.
0,0 ---
5 Le scripting, les thèmes et les fichiers .txt ont été conçus par
<pseudo de l’auteur>
0,0 ----
5
.:.
echo -s 0 -
echo -s 5
.:.
Pour tous renseignements, réclamations, insultes, envois de virus
pour me montrer votre gratitude entre autres choses :
<e-mail de l’auteur>
.:.
echo -s 0 -
echo -s 5
.:.
Merci d'avoir choisi
<bot et sa version>
! N'oubliez pas que vous
pouvez toujours télécharger <petit coup de pub pour un autre bot ou
script au passage…> sur <URL du Robot> !
.:.
echo -s 0 -
echo -s 5
.:.
Tu vas accéder au @dialog de configuration afin de rentrer les données
nécessaires au bon fonctionnement du bot .:.
echo -s 0 -
echo -s 5
.:.
Chargement des scripts en cours...
.:.
set %utilisation 1
load -rs <script d’initialisation>.mrc
echo -s
5 .:. Scripts loadés avec succès .:.
.timer1 1 3 /dialog -m <nom du dialog>
<nom du dialog>
}
if (%utilisation >
0) {
inc %utilisation
1
echo
-s 5
.:.
<pseudo du bot> a été lancé
$+ %utilisation
fois
.:.
echo -s 0 -
echo -s 5
.:.
De plus nous vous rappelons que des mises à jour sont disponibles sur
<URL du site officiel>
.:.
echo -s 0 -
echo -s 5
.:.
0,0 -----
5 Scripté par
<pseudo de l’auteur>
0,0 ------
5
.:.
echo -s 0 -
echo -s 5
.:.
Pour tous renseignements, réclamations, insultes, envois de virus pour
me montrer votre gratitude entre autres choses :
<e-mail de l’auteur>
.:.
echo -s 0 -
echo -s 5
.:.
Merci d'avoir choisi
<Bot et version>
!
.:.
echo -s 0 -
echo -s 5
.:.
Vous allez maintenant vous connecter automatiquement à votre serveur
préféré
.:.
echo -s 0 -
echo -s 0 ---------------------------------------------------
5
.:. Bon t'chat ! .:.
nick %botnick
}
}
Le code a été coupé en deux. La première partie s’exécute si
c’est la première utilisation du Robot, c'est-à-dire si la variable %utilisation
n’a pas été créée. Ce qui va déclencher un message dans le status du Bot grâce
à l’utilisation des ECHO (le –s exécute l’ECHO dans le status), à la fin du
message la variable %utilisation est assignée pour qu’au prochain démarrage
ce soit la deuxième condition qui soit exécutée. Vous pouvez par la même occasion
en profiter pour charger le ou les scripts qui sont dans votre dossier mIRC
pour être bien certains que les commandes d’initialisation (création de dossiers,
de fichiers, mise en place de variables, etc.) soient bien effectuées au premier
démarrage du Bot, ensuite vous pouvez charger le dialog de configuration pour
que l’utilisateur rentre les données nécessaires au bon démarrage du Bot.
La deuxième partie s’exécute si ce n’est pas le premier démarrage
du Bot, il s’agit d’un simple message d’accueil indiquant que le script a
été lancé X fois en incrémentant à chaque lancement la variable %utilisation
de 1. Vous pouvez ajouter, à la fin du code, une commande pour que le Bot
prenne bien le pseudo qui a été enregistré dans la variable %botnick.
Ce système vous permet d’envoyer systématiquement le message
d’accueil, vous pouvez donc rappeler vos coordonnées, demander de visiter
votre site, ou de lire les fichiers d’aide si l’utilisateur a besoin d’informations
complémentaires.
De plus vous avez parfaitement le droit
d’inclure un autojoin sur votre salon perso pour que le bot, lorsqu’il sera
téléchargé, le joigne à la connexion, utilisez l’évènement On Connect
pour cela.
Une fois que vous avez réglé tous
les petits détails que vous vouliez régler nous allons voir ce qui va se passer
après la conception effective de votre Robot.
©2002
- Nessy
www.magician-mIRC.org