# Débutez dans IRC/Créer un robot

Vous rencontrez sur les canaux de discussion plusieurs robots. Les plus connus sur le réseau Freenode sont ChanServ et NickServ. Une fois que vous serez un peu plus familiarisé avec l'environnement IRC, peut-être aurez-vous envie de vous lancer dans le développement d'un robot (bot) capable de gérer votre salon !
Cette partie demande quelques notions en programmation Python. Avant de commencer, téléchargez et installez Python ainsi que les modules de Joel Rosdahl irclib et ircbot à cette adresse : http://sourceforge.net/projects/python-irclib/files/. Décompressez le fichier et lancez setup.py.
Le programme doit commencer par l'import des modules irclib et ircbot. La programmation sera événementielle, c'est-à-dire qu'elle repose sur des événements : quand il se passe une action, on fait cela (quand un message est posté, alors on répond bonjour, par exemple). Vous devrez donc définir une méthode qui sera appelée par le programme quand l'événement se produira. Faites commencer vos programmes par class LeRobot(ircbot.SingleServerIRCBot):. Vous aurez donc un code de ce type :
Attention, pour que l'import fonctionne, veillez à enregistrer votre programme dans le même répertoire que irclib.py et ircbot.py
Différentes méthodes :
| Nom | Description |
| on_kick | Lors du kick d'un utilisateur |
| on_nicknameinuse | |
| on_welcome | Lors de la connexion à IRC |
| on_privmsg | Lors de la réception d'un message privé |
| on_dccmsg | |
| on_join | Lors de l'arrivée sur un salon |
| on_dccchat | |
| on_action | Quand un utilisateur utilise /me |
| on_pubmsg | Lors de la réception d'un message sur le channel |

## Quelques commandes

Lors de la définition d'une méthode, celle-ci peut prendre plusieurs paramètres, comme serv ou ev.

### serv

serv est une instance, elle permet au robot de dialoguer avec le serveur, à la façon d'un client IRC classique comme Pidgin.

#### Méthodes utilisables avec serv

join("#channel") : le robot rejoint un salon de discussion. Si celui-ci est protégé par un mot de passe, mettez celui-ci à la suite (join("#channel motdepasse")).
privmsg("destinataire", "message") envoie un message sur un salon ou à une personne.
nick("pseudonyme") permet de changer le pseudonyme du robot.
get_nickname renvoie le pseudonyme effectif du robot.
action("destinataire", "message") envoie /me. Attention, privmsg("#channel", "/me mange") ne fonctionne pas avec tous les clients. Certains verront (13:30:03) ***BotIRC mange, d'autres verront (13:30:03) BotIRC: /me mange, c'est pourquoi l'utilisation de action s'avère indispensable.
invite("invité", "#channel") envoie un message d'invitation à l'utilisateur invité.
part("#channel", "message") quitte le canal spécifié avec un message.
die déconnecte le robot.
Si le robot est opérateur, il peut utiliser :
kick("#channel", "kické", "message") expulse un utilisateur du salon.
mode("#channel", "mode") change le mode du channel, par exemple mode("#wikibooks-fr", "+i"). Le cumul des modes est autorisé : mode("#wikibooks-fr", "+i-m").

## Exemples de code
### Robot de bar

Ce très simple robot vous donne ce que vous lui demandez.

#### Utilisation
### Robot videur

Ce robot, s'il est opérateur, expulse du salon l'utilisateur demandé.

#### Exemple d'utilisation
### Un robot inexpulsable

Ce robot est inexpulsable. En effet, si il est kické, on_kick le ramène immédiatement.