Bot Telegram con Node.js

postato in: Articoli, Guida | 0

node_telegram-copia

Buongiorno a tutti! In parecchi post abbiamo parlato di un’applicazione di messaggistica open source molto famosa: Telegram. Con essa sono disponibili molte funzionalità: le chat ovviamente, i canali broadcast, chat di gruppo, chat segrete che utilizzano potenti e moderni algoritmi di cifratura simmetrica e asimmetrica e infine ci sono i bot, ed è proprio di loro che andremo a parlare in questo post.

Cosa sono i bot di Telegram

Sono delle chat particolari, dove un utente parla con un programma scritto in un qualche linguaggio di programmazione. Essi si possono utilizzare in diversi modi, ad esempio ci sono dei bot che informano sugli arrivi dei bus, altri che avvertono gli utenti di nuove uscite su servizi di streaming online, o semplici bot che simulano una chat con un’altra persona. Recentemente è stata inserita la possibilità di creare anche dei giochi utilizzando i bot, insomma si può fare veramente di tutto. In questo post vedremo come crearne uno base con Node.js.

Le API

Iniziamo ad andare più in dettaglio e vediamo cosa dobbiamo fare per interagire con le API.

Come per molte altre applicazioni, anche Telegram mette a disposizione delle API. Per poterle utilizzare, dobbiamo chiedere a Telegram di crearci un nuovo bot, ossia un semplice identificativo che ci consentirà appunto di utilizzare le API.

Per fare questo ci basta chattare con un bot particolare: il BotFather.

Una volta aperta la conversazione e fatto partire il bot con “start”, ci verranno mostrati una lista di comandi possibili da utilizzare con esso. Uno dei primi è “/newbot” che è proprio quello che ci serve per crearne uno nuovo. Una volta inviato tale comando, ci verranno chieste delle informazioni sul bot, ed infine ci sarà dato un token, che è esattamente quello che ci serve per comunicare con le API dei bot di Telegram.

Bot base con Node.js

Ora che abbiamo il token, vediamo come creare il bot utilizzando Node.js, ma prima diamo una panoramica generale su cosa è Node.js.

Esso è un framework scritto in C++ per il motore JavaScript V8, dove quest’ultimo serve per eseguire degli script in JavaScript. Quindi in poche parole noi andremo a scrivere il nostro bot in JavaScript.

Node.js ha anche un gestore di pacchetti proprio ossia npmjs, quindi se ci servirà una particolare libreria, ci basterà installarla utilizzando npm.

Vediamo come installare node.js ed npm. Essi si trovano nella maggior parte dei repository,  ad esempio se siamo su Ubuntu diamo il seguente comando:

 

sudo apt-get update

sudo apt-get install nodejs npm

 

Una volta installati tutti i componenti, procediamo a creare il nostro bot. Creiamo la directory del nostro progetto:

 

mkdir tuxmaniacsbot

cd tuxmaniacsbot

 

Ora che siamo dentro la directory del progetto, creiamo il file delle dipendenze che sarà utile a node.js per tenere traccia di librerie e altri parametri:

 

npm init

 

Qui ci verranno richieste diverse informazioni tra cui il file principale che verrà eseguito quando lanceremo l’applicazione, che di default è index.js.

Bene a questo punto installiamo un’altra componente molto importante per creare il bot, ossia una libreria che implementa le API. In rete se ne trovano parecchie per node.js, noi abbiamo scelto node-telegram-bot-api in quanto molto completa. Quindi diamo il seguente comando per installarla:

 

npm install --save node-telegram-bot-api

 

Perfetto! Ora abbiamo tutti i componenti per creare la base del nostro bot. Quindi apriamo il file principale, quello specificato quando abbiamo dato npm init e scriviamo questo codice:

 

var TelegramBot = require('node-telegram-bot-api');

var bot = new TelegramBot(TOKEN-API, {polling: true});

//Arrivo del messaggio /start
bot.onText(/\/start/, function (msg) {
   bot.sendMessage(msg.from.id.toString(),  "Benvenuto su tuxmaniacsbot!"); 
});

bot.onText(/ciao/, function (msg) {
   bot.sendMessage(msg.from.id.toString(),  "Ciao anche a te!"); 
});

 

Il codice è molto semplice da come potete vedere. Nella seconda riga al posto di TOKEN-API dovete mettere il token che vi è stato fornito durante la registrazione del vostro bot.

Questo bot non fa altro che rispondere “Benvenuto su tuxmaniacsbot!” come primo messaggio, dopo aver cliccato /start e infine vi risponderà “Ciao anche a te!” quando voi gli scriverete “ciao”.

Ovviamente questa è solo una base, si possono fare molte altre cose, come ad esempio impostare dei tasti nella tastiera in questo modo:

 

bot.onText(/ciao/, function (msg) {

   var opts = {
      reply_markup: JSON.stringify({
         keyboard: [
            [‘ciao’]]
      })
   };

   bot.sendMessage(msg.from.id.toString(),  "Ciao anche a te!", opts); 
});

 

In questo modo, nella tastiera dell’applicazione di Telegram, verrà mostrato un tasto con scritto “ciao”.

Se andate sulla pagina di github di questa libreria troverete molto altri esempi da poter utilizzare nel vostro bot.

Per avviare il nostro bot ci basterà dare il seguente comando:

 

node index.js

 

Conclusioni

Oggi abbiamo visto com’è semplice creare un bot ed utilizzare le API di Telegram, ora non vi resta che utilizzare la vostra fantasia per crearne uno personale ;).

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Lascia un commento