4 692
modifications
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(34 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
La création d'un <strong>robot IRC</strong> avec Node. | {{#seo: | ||
|title_mode=replace | |||
|title=Créer un robot IRC avec Node.js | |||
|description=Tuto simple pour créer un bot IRC avec Node.js et irc-framework. | |||
}} | |||
La création d'un <strong>robot IRC</strong> avec Node.js est simple, il suffit d'avoir un peu de compétence en JavaScript et il sera facile de comprendre petit à petit de comment ça marche. | |||
Ici pas de blablabla, je vais pas écrire un grand article à propos de NodeJS et JavaScript. Le mieux c'est de passer au tuto directement. | Ici pas de blablabla, je vais pas écrire un grand article à propos de NodeJS et JavaScript. Le mieux c'est de passer au tuto directement pour créer ce bot IRC. | ||
==Installation de NodeJS== | ==Installation de NodeJS== | ||
Tout d'abord, il faut avoir Node.js sur l'ordinateur, si vous ne l'avez pas, il suffit d'aller à cette adresse et de l'installer: https://nodejs.org/fr/download/ | |||
Il est recommandé de prendre la version <strong>LTS</strong> pour une | Il est recommandé de prendre la version <strong>LTS</strong> pour une meilleure stabilité. | ||
En installant Node. | En installant Node.js, l'application npm sera aussi installée, c'est le gestionnaire de paquets par défaut de NodeJS. | ||
Pour la suite de ce tuto, nous allons utiliser l'invite de commande de Windows et on va faire comme si que | Pour la suite de ce tuto, nous allons utiliser l'invite de commande de Windows et on va faire comme si que Node.js est installé sur Windows. | ||
==Création d'un dossier pour ce projet de bot == | ==Création d'un dossier pour ce projet de bot == | ||
Sur le bureau, créez un dossier | Sur le bureau, créez un dossier en le nommant <code>Robot IRC</code>. | ||
===Utilisation du paquet "IRC Framework"=== | ===Utilisation du paquet "IRC Framework"=== | ||
Ligne 21 : | Ligne 26 : | ||
Une fois que vous êtes dans le dossier <code>Robot IRC</code>, tapez <code>npm install irc-framework</code>. Un dossier "node_modules" sera visible dans notre dossier "Robot IRC", cela voudra donc dire que le paquet <code>irc-framework</code> a bien été installé. | Une fois que vous êtes dans le dossier <code>Robot IRC</code>, tapez <code>npm install irc-framework</code>. Un dossier "node_modules" sera visible dans notre dossier "Robot IRC", cela voudra donc dire que le paquet <code>irc-framework</code> a bien été installé. | ||
<blockquote style="border: #ccc solid 1px;padding:5px 8px;font-size:13px;background: #fff3cf;"><u>Note:</u> il se peut qu'il y a des erreurs liées à Yarn pendant l'installation, il suffit d'ignorer ces erreurs sur Windows. Yarn c'est le concurrent de npm, et pour faire ce tuto nous n'avons pas besoin de Yarn.<br> | |||
Si jamais on a besoin de Yarn, il suffit alors de l'installer avec <code>npm install --global yarn</code> puis de vérifier sa version <code>yarn --version</code> (c'est utile de connaitre la version) et ensuite il suffit d'installer <code>irc-framework</code> avec <code>yarn add irc-framework</code> ou si vous êtes à l'intérieur du dossier <code>irc-framework</code> alors il suffit juste de taper <code>yarn</code> et d'attendre quelques secondes et normalement après c'est installé.</blockquote> | |||
Ligne 27 : | Ligne 33 : | ||
Dans le dossier <code>Robot IRC</code>, créez un fichier nommé <code>bot.js</code>. | Dans le dossier <code>Robot IRC</code>, créez un fichier nommé <code>bot.js</code>. | ||
Pour cela il faut utiliser Bloc-note ou NotePad++ ou | Pour cela il faut utiliser Bloc-note ou NotePad++ ou un éditeur JavaScript. | ||
Il faut faire en sorte que le fichier s' | Il faut faire en sorte que le fichier s'appelle bien <code>bot.js</code> et non pas <code>bot.js.txt</code>. | ||
Ensuite tout en haut du fichier bot.js, ajoutez ceci : | Ensuite tout en haut du fichier bot.js, ajoutez ceci : | ||
<source lang="javascript"> | <source lang="javascript"> | ||
const IRC = require('./'); | |||
</source> | </source> | ||
Vous pouvez ajouter ce codede base juste en dessous (et c'est même commenté): | |||
<source lang="javascript"> | <source lang="javascript"> | ||
const bot = new IRC.Client(); // Constructeur. | |||
// Configuration de la connexion | // Configuration de la connexion | ||
Ligne 45 : | Ligne 51 : | ||
bot.connect({ | bot.connect({ | ||
host: 'irc.discussionner.com', | host: 'irc.discussionner.com', | ||
nick: ' | nick: 'Robot' | ||
}); | }); | ||
// Événement | // Événement équivalent au raw 001=RPL_WELCOME | ||
bot.on('registered', function() { | bot.on('registered', function() { | ||
console.log('Connected!'); | console.log('Connected!'); | ||
bot.join('#quizz'); // | bot.join('#quizz'); // Joindre le salon #quizz à partir du raw 001. | ||
// var channel = bot.channel('#quizz'); | // var channel = bot.channel('#quizz'); | ||
// channel.join(); | // channel.join(); | ||
// channel.say('Hi!'); | // channel.say('Hi!'); | ||
// channel.updateUsers(function() { | // channel.updateUsers(function() { | ||
// console.log(channel.users); // liste tous les users présents sur #quizz | // console.log(channel.users); // liste tous les users présents sur #quizz. | ||
// }); | // }); | ||
}); | }); | ||
// Événement | // Plus flexible et adapté aux cas d'utilisation avancés; l'utilisation | ||
// du raw 005=RPL_ISUPPORT peut être avantageux. Il faudra voir du côté de cet event : | |||
/* | |||
let raw005 = false; | |||
bot.on('server options', function(event) { | |||
if (!raw005) { // Afin d'éviter le multiple lignes du 005. | |||
raw005=true; // Ne pas oublier d'ajouter raw005=false; dans 001=registered. | |||
bot.join('#quizz'); // Joindre le salon #quizz à partir du raw 005. | |||
} | |||
}); | |||
// Il y a aussi 376=RPL_ENDOFMOTD ou 422=RPL_NOMOTD | |||
*/ | |||
// Événement déconnexion du bot; bug ou connexion impossible. | |||
bot.on('close', function() { | bot.on('close', function() { | ||
console.log('Connection close'); | console.log('Connection close'); | ||
Ligne 68 : | Ligne 87 : | ||
bot.on('message', function(event) { | bot.on('message', function(event) { | ||
console.log('<' + event.target + '>', event.message); | console.log('<' + event.target + '>', event.message); | ||
// Il suffit de taper /msg Bobot whois <pseudo> et ce if sera enclenché. Il sera même | |||
bot.whois(event.message.split(' ')[1]); // | // enclenché si le message est tapé en salon : /msg #quizz whois <pseudo> | ||
if (event.message.indexOf('whois') === 0) { | |||
bot.whois(event.message.split(' ')[1]); // l'argument [1] signifie <pseudo>, le robot exécutera un /whois <pseudo>. | |||
} | } | ||
}); | }); | ||
// Événement en salon ou en pv, on tape "!hi" dans le pv du bot ou dans le | // Événement en salon ou en pv, on tape "!hi" dans le pv du bot ou dans le salon #quizz et le bot répondra "sup". | ||
// Ce système peut aussi être construit directement dans l'événement 'message'. | // Ce système peut aussi être construit directement dans l'événement 'message'. | ||
bot.matchMessage(/^!hi/, function(event) { | bot.matchMessage(/^!hi/, function(event) { | ||
Ligne 79 : | Ligne 100 : | ||
}); | }); | ||
// Événement whois | // Événement whois; réception de la réponse du whois. | ||
bot.on('whois', function(event) { | bot.on('whois', function(event) { | ||
console.log(event); | console.log(event); | ||
}); | }); | ||
// Événement join | // Événement join; réception des joins. | ||
bot.on('join', function(event) { | bot.on('join', function(event) { | ||
console.log('user joined', event); | console.log('user joined', event); | ||
}); | }); | ||
// Événement userlist | // Événement userlist.. | ||
bot.on('userlist', function(event) { | bot.on('userlist', function(event) { | ||
console.log('userlist for', event.channel, event.users); | console.log('userlist for', event.channel, event.users); | ||
}); | }); | ||
// Événement part | // Événement part. | ||
bot.on('part', function(event) { | bot.on('part', function(event) { | ||
console.log('user part', event); | console.log('user part', event); | ||
Ligne 102 : | Ligne 123 : | ||
Enregistrez le fichier et démarrez votre bot en tapant <code>node bot.js</code> dans votre terminal (invite de commande). Vous pouvez aussi utiliser <code>node bot</code> pour le démarrer. | Enregistrez le fichier et démarrez votre bot en tapant <code>node bot.js</code> dans votre terminal (invite de commande). Vous pouvez aussi utiliser <code>node bot</code> pour le démarrer. | ||
Pour stopper sa connexion, tapez <code> | Pour stopper sa connexion, tapez <code>CTRL</code> + <code>C</code>. | ||
Voila, c'est tout ce qu'il faut au minimum pour créer un petit robot IRC avec Node.js. | |||
Paquet <strong>IRC Framework</strong> sur GitHub : https://github.com/kiwiirc/irc-framework | |||
Le même paquet sur npmjs : https://www.npmjs.com/package/irc-framework | |||
Documentations <strong>IRC Framework</strong> : https://github.com/kiwiirc/irc-framework/tree/master/docs | |||
Le projet <strong>IRC-Framework</strong> est créé par le groupe KiwiIRC, il est parfait pour créer des robots IRC et des clients IRC, comme celui qu'il y a sur https://discussionner.com. | |||
Il existe un autre paquet pour créer un robot IRC, c'est <code>npm install irc</code> (https://www.npmjs.com/package/irc) que je déconseille d'utiliser, car incomplet et en plus il semble abandonné depuis 2016. | |||
<hr> | |||
Depuis 2019, j'ai créé 5 robots | Depuis 2019, j'ai créé 5 robots Node.js (avec le paquet irc-framework), et ils sont actuellement en ligne sur le <strong>tchat IRC Discussionner.com</strong> dans différents salons, les noms des robots sont: | ||
{| class="wikitable" | |||
|- | |||
!Pseudo sur Discussionner | |||
!Nom du bot | |||
!Date de création/Première version | |||
!Créateur | |||
!Description | |||
|- | |||
|Sysop | |||
|[[Sysop|Sysop.js-stable]] | |||
|Janvier 2020 | |||
|Madrix | |||
|Robot autonome, commandes administrateurs et commandes globops | |||
|- | |||
|Uno | |||
|Uno.js-stable | |||
|Avril 2020 | |||
|Madrix | |||
|Le jeu du Uno par écrit, il est en ligne sur #uno | |||
|- | |||
|Quizz | |||
|Quizz.js-stable | |||
|Mars 2018 | |||
|Madrix | |||
|Robot entièrement recopié au Quizz Trivia d'eggdrop, ce bot est en ligne sur le salon #quizz | |||
|- | |||
|Sympa et Exam | |||
|Quizz-ados.js-stable | |||
|Décembre 2019 | |||
|Madrix | |||
|idem, mais cette fois optimisé pour les ados du salon #Ados avec des questions versions collégiens. Exam est présent sur #16-25ans. Exam est aussi présent sur EuropNet dans le salon #mimacy. | |||
|- | |||
|tapavu | |||
|[[Tapavu|TapaVu.js-stable]] | |||
|Janvier 2021 | |||
|Madrix | |||
|Robot entièrement recopié au TapaVu de l'eggdrop | |||
|- | |||
|} | |||
Veuillez me contacter par courrier électronique à l'adresse madrix@discussionner.com si vous êtes intéressé par l'un de ces robots, en échange d'une contrepartie. |