« Créer un robot IRC avec NodeJS » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(38 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 robot IRC avec Nodejs et ircframework. | |||
}} | |||
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> | |||
=== | ===Créer d'un fichier "bot.js" et le lancer=== | ||
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 : | ||
< | <syntaxhighlight lang="javascript" line> | ||
const IRC = require('./'); | |||
</ | </syntaxhighlight> | ||
Vous pouvez ajouter ce code de base juste en dessous (et c'est même commenté): | |||
< | <syntaxhighlight lang="javascript" line> | ||
//const IRC = require('./'); | |||
const bot = new IRC.Client(); // Constructeur. | |||
// Configuration de la connexion | // Configuration de la connexion | ||
Ligne 45 : | Ligne 52 : | ||
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 88 : | ||
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 101 : | ||
}); | }); | ||
// É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); | ||
}); | }); | ||
</ | </syntaxhighlight> | ||
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>serveur 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. |
Dernière version du 19 mai 2024 à 05:03
La création d'un robot IRC 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 pour créer ce bot IRC.
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 LTS pour une meilleure stabilité.
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 Node.js est installé sur Windows.
Création d'un dossier pour ce projet de bot
Sur le bureau, créez un dossier en le nommant Robot IRC
.
Utilisation du paquet "IRC Framework"
Ouvrez l'invite de commande, et tapez: cd "C:\Users\<nom ordinateur>\Desktop\Robot IRC"
Une fois que vous êtes dans le dossier Robot IRC
, tapez npm install irc-framework
. Un dossier "node_modules" sera visible dans notre dossier "Robot IRC", cela voudra donc dire que le paquet irc-framework
a bien été installé.
Note: 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.
Si jamais on a besoin de Yarn, il suffit alors de l'installer avecnpm install --global yarn
puis de vérifier sa versionyarn --version
(c'est utile de connaitre la version) et ensuite il suffit d'installerirc-framework
avecyarn add irc-framework
ou si vous êtes à l'intérieur du dossierirc-framework
alors il suffit juste de taperyarn
et d'attendre quelques secondes et normalement après c'est installé.
Créer d'un fichier "bot.js" et le lancer
Dans le dossier Robot IRC
, créez un fichier nommé bot.js
.
Pour cela il faut utiliser Bloc-note ou NotePad++ ou un éditeur JavaScript.
Il faut faire en sorte que le fichier s'appelle bien bot.js
et non pas bot.js.txt
.
Ensuite tout en haut du fichier bot.js, ajoutez ceci :
const IRC = require('./');
Vous pouvez ajouter ce code de base juste en dessous (et c'est même commenté):
//const IRC = require('./');
const bot = new IRC.Client(); // Constructeur.
// Configuration de la connexion
// Voir la liste complète sur https://github.com/kiwiirc/irc-framework/blob/master/docs/clientapi.md
bot.connect({
host: 'irc.discussionner.com',
nick: 'Robot'
});
// Événement équivalent au raw 001=RPL_WELCOME
bot.on('registered', function() {
console.log('Connected!');
bot.join('#quizz'); // Joindre le salon #quizz à partir du raw 001.
// var channel = bot.channel('#quizz');
// channel.join();
// channel.say('Hi!');
// channel.updateUsers(function() {
// console.log(channel.users); // liste tous les users présents sur #quizz.
// });
});
// 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() {
console.log('Connection close');
});
// Événement des messages en salons et en privés reçus sur le bot.
bot.on('message', function(event) {
console.log('<' + event.target + '>', event.message);
// Il suffit de taper /msg Bobot whois <pseudo> et ce if sera enclenché. Il sera même
// 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 salon #quizz et le bot répondra "sup".
// Ce système peut aussi être construit directement dans l'événement 'message'.
bot.matchMessage(/^!hi/, function(event) {
event.reply('sup');
});
// Événement whois; réception de la réponse du whois.
bot.on('whois', function(event) {
console.log(event);
});
// Événement join; réception des joins.
bot.on('join', function(event) {
console.log('user joined', event);
});
// Événement userlist..
bot.on('userlist', function(event) {
console.log('userlist for', event.channel, event.users);
});
// Événement part.
bot.on('part', function(event) {
console.log('user part', event);
});
Enregistrez le fichier et démarrez votre bot en tapant node bot.js
dans votre terminal (invite de commande). Vous pouvez aussi utiliser node bot
pour le démarrer.
Pour stopper sa connexion, tapez CTRL
+ C
.
Voila, c'est tout ce qu'il faut au minimum pour créer un petit robot IRC avec Node.js.
Paquet IRC Framework sur GitHub : https://github.com/kiwiirc/irc-framework
Le même paquet sur npmjs : https://www.npmjs.com/package/irc-framework
Documentations IRC Framework : https://github.com/kiwiirc/irc-framework/tree/master/docs
Le projet IRC-Framework 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 npm install irc
(https://www.npmjs.com/package/irc) que je déconseille d'utiliser, car incomplet et en plus il semble abandonné depuis 2016.
Depuis 2019, j'ai créé 5 robots Node.js (avec le paquet irc-framework), et ils sont actuellement en ligne sur le serveur Discussionner.com dans différents salons, les noms des robots sont:
Pseudo sur Discussionner | Nom du bot | Date de création/Première version | Créateur | Description |
---|---|---|---|---|
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.js-stable | Janvier 2021 | Madrix | Robot entièrement recopié au TapaVu de l'eggdrop |
Veuillez me contacter par courrier électronique à l'adresse [email protected] si vous êtes intéressé par l'un de ces robots, en échange d'une contrepartie.