Un bot IRC qu'il est bien : le bobot
Click here to download bobot version 2.3.16.
Note: the bobot hasn't been modified for two years. I guess that there are much better bots out there now. -- Hugo (Nov 24, 1999)
OK guys. You can't speak French and unfortanately I was too lazy to translate this page in English (and I don't have time anymore), so here is a quick summary of what Bobot does:
- it is a mono-channel bot
- it has a control of the ouput flow: it can't flood the server, it can merge commands to be more efficient
- it can do temporary bans, and it does them in a clever way
- it is fast and powerful
- the configuration is simple
Qu'est-ce qu'un bot ?
Pour avoir les pleins pouvoirs sur un channel IRC, il faut avoir le status d'opérateur, statut qu'on perd des que l'on quitte le channel. Par consequent, pour etre sur de garder l'op, on place des robots qui répondront a des commandes. C'est le pricipe d'un bot.
Présentation du bobot :
Le bobot est un bot qui a été programmé en C par Etienne Bernard (eb@via.ecp.fr) et moi-même, Hugo Haas (hugo@via.ecp.fr). Nous nous sommes efforcés de fa
ire un bot le plus rapide possible, souple d'utilisation, et puissant.
C'est un bot mono-channel, destiné à l'admininistration.
Les différentes commandes :
Voici les différentes commandes implémentées dans la version 2.3.12 :
- Pour tout le monde :
- Shows your level : who level access
Pour savoir si on a acces au bobot.
- A partir du niveau User :
- Help : help
Liste des commandes (+description si vous etes en DCC Chat).
- Changes your password : passwd
Syntaxe : passwd <mot de passe/NONE>
Pour changer son mot de passe.
- To be recognized by the bot : identify ident
Syntaxe : identifu/ident <mot de passe>
Pour être reconnu par le bot si l'utilisatuer a un mot de passe.
- Shows informations about someone : whois wi
Syntaxe : whois/wi <nick>
Vous donne le niveau de quelqu'un.
- Makes the bot talk : say
Syntaxe : say <phrase>
Fait parler le bot.
- Makes the bot do an action : action
Syntaxe : action <phrase>
Fait une action.
- Does a name server query : nsl
Syntaxe : nsl <nick/adresse IP/nom>
Fait une requete DNS.
- Shows the userlist : userlist
Affiche la userlist.
- Shows the shitlist : shitlist
Affiche la shitlist.
- People on the channel : names
Montre qui est sur le channel.
- Shows the banlist : banlist
Affiche la banlist (indique pendant combien de temps ils sont bannes).
- Kick : kick k
Syntaxe : kick/k <nick/masque> [raison]
- Ban : ban b
Syntaxe : ban/b <nick/masque>
- Time-Ban : tban tb
Syntaxe : tban/tb <nick/masque> <duree>
Une durée s'exprime soit par un simple nombre designant un nombre de secondes, soit par un code ou d/j=jour,h=heure,m=minute,s=seconde.
- Deban : deban dban db unban uban ub u
Syntaxe : deban/dban/db/unban/uban/ub/u <nick/masque>
- Kick-Ban : kickban bkick kb
Syntaxe : kickban/bkick/kb <nick/masque> [raison]
- Time-Kick-Ban : tkban tkb
Syntaxe : tkban/tkb <nick/masque> <duree> [raison]
- Ops you : me
- Ops someone : op o
Syntaxe : op/o [nick]
Sans argument, la commande a les memes effets que me.
- Deops someone : deop dop do
Syntaxe : deop/dop/do [nick/masque]
Même remarque qu'avant.
- Changes the modes of the channel : mode
Syntaxe : mode [modes]
Pour changer les modes (sauf o et b).
- Sets the topic : topic t
Syntaxe : topic/t <topic>
- Joins a channel : join j
- Pour les Masters :
- Changes the nick : nick
Syntaxe : nick <nick>
Change le nick du bot.
- Changes the server : server
Syntaxe : server [numero de serveur]
Sans argument, la commande donne la liste des serveurs accessibles.
- Switches to the next server : nextserver
Passe au serveur suivant.
- Adds someone to the shitlist : shit
Syntaxe : shit <nick/mask> <niveau> <duree>
Les niveaux de shit sont : 1-ne peut pas etre oppé, 2-kickbanné quand il join pendant 1 heure, 3-kickbanné jusqu'a la fin de sa période de shit.
- Removes someone from the shitlist : rshit
Syntaxe : rshit <masque>
Enlève une entrée dans la shitlist.
- Adds a user : add
Syntaxe : add <user/masque> [niveau [protection [auto-op]]]
Les niveau sont : 0-Nothing, 1-User, 2-Master.
La protection est : 0-Aucune, 1-Ne peux pas être banné, 2-Ne peux pas être déopé.
L'auto-op est 0 ou 1.
Par défaut, l'ajout se fait en 1 0 0.
- Deletes a user : del
Syntaxe : del <nick/masque>
- Loads the userlist : load
Charge la userlist et la shitlist.
- Saves the userlist : save
Sauve la userlist et la shitlist.
- Show/set different variables : set
Syntaxe : set [variable valeur]
Pour modifier des variables de fonctionnement. Sans argument, donne la liste des variables et leur valeur.
- Kills the bot : die
Syntaxe : die [raison]
Le statut du bot par CTCP :
On peut interroger le bot par CTCP pour connaître quelques rensignements utiles :
- version
Renvoie la version du bobot.
- clock
Indique depuis combien de temps le bot a été lancé.
- lag
Indique si le temps de réponse du serveur sur lequel se trouve le bobot.
- command
Renvoie le caractère de commande du bot.
- ping
Pour tester le temps de réponse du bot.
Bien entendu, le bot ne répond qu'aux personnes qui se trouvent sur sa userlist.
- La gestion du temps
Le bobot sait faire des actions à une heure donnée. C'est ainsi qu'on peut bannir, shiter quelqu'un pendant 3 jours par exemple, et pas une seconde de plus.
- Une gestion intelligente des bans
Afin d'éviter de remplir la banlist trop rapidement, le bobot lorsqu'il doit banner un domaine regarde si celui-ci n'englobe pas des sous domaines déja bannis. Si c'est le cas, il deban ceux-ci et ban le domaine demande.
Par exemple, si *!*@*.via.ecp.fr et *!*@*.cti.ecp.fr étaient bannis, et qu'on demande de bannir *!*@*.ecp.fr, le bobot va d'un coup debannir *!*@*.via.ecp.fr et *!*@*.cti.ecp.fr et bannir *!*@*
.ecp.fr.
Pour le deban, si on deban quelqu'un, le bobot deban tous les masques nécessaires pour que la personne puisse venir sur le channel.
- Le contrôle du débit
Le bobot ne parle jamais plus vite que le serveur, pour ne pas avoir de pénalité qui le ralentirait. Et pour avoir le moins de pénalités possible, il regroupe toutes les commandes qui peuvent l'être (changement de m
odes et kick) avant de les envoyer au serveur.
Il dispose aussi d'une queue de sortie ou les commandes sont classés par ordre de priorité. Ainsi, les opérations les plus importantes sont toujours effectuées le plus vite possible (ie dès que le serveur le permet
).
- Le contrôle du channel
Sont implémentés :
- un contrôle du flood ;
- une protection du channel contre les attaques de clone-bots ;
- des kicks anti-couleurs (mIRC est bien gentil, mais quand le client IRC ne supporte pas les couleurs, c'est très lourd) et surtout anti-comic-chat (insupportable).
Vous pouvez voir tourner un bobot sur les channels #francaise (yahout, anciennement Paturette), le channel pour lequel il a été concu et sur #france2 (Dusse). D'autres bobots traînent sur IRC.
Bien que la gestion de la queue ne soit pas optimale (j'ai récemment jeté un oeil aux sources du serveur IRC, et la gestion actuelle n'est pas tout a fait exacte), le Bobot reste à mon avis très éfficace. Il est par exemple agrave l'heure actuelle plus performant que le Bobot++ puisqu'il sait regrouper les commandes MODEs.
En ce qui concerne sa fiabilité, je l'ai récemment fait tourner sur un système Linux pendant plus de 40 jours. Il a finalement été k-liné par un IRC-op pour "persistent idling" alors que les bots étaient authorisés sur ce serveur. Bref, fais confiance au Bobot ! :-)
Etienne Bernard a écrit le bobot++ en C++ qui est plus stable, complet, puissant, joli, etc.
Cliquez ici pour récupérer les sources du bobot 2.3.16.
Hugo HAAS
Last modified: $Date: 2002-06-17 14:41:35 -0700 (Mon, 17 Jun 2002) $