[Pubblichiamo un estratto da Costruire bot con Node.js, libro che porta il dono della parola automatica a Skype, Twitter, Slack e altri ambienti, tra cui Telegram. Il libro spiega l’installazione di Node.js e npm, che questo articolo presuppone, assieme alla familiarità almeno minima con la riga di comando.]
Iniziamo creando, dalla riga di comando, una cartella sul disco fisso in cui posizionare il bot.
mkdir telegrambot cd telegrambot
Partendo dal presupposto che siano installati Node.js e npm, creiamo e inizializziamo il nostro package.json, che conterrà le dipendenze e le definizioni del bot:
npm init
Dopo avere impostato le opzioni di npm init, otterrete qualcosa di simile a ciò che si vede nella figura seguente.
Nella vostra cartella del progetto vedrete i risultati, cioè il vostro file package.json.
Come nell’esempio precedente, utilizzeremo Express come framework REST per Node.js. Lo installeremo e salveremo nel nostro file package.json in questo modo:
npm install express --save
Dopo avere installato Express, dovreste vedere qualcosa di simile alla figura seguente.
Dopo l’installazione di Express, occorre installare il pacchetto node-telegram-bot-api.
Per l’installazione, eseguite questo comando di npm:
npm install node-telegram-bot-api --save
Il risultato dovrebbe essere simile a questo.
Di seguito, occorre aggiornare il package.json per aggiungere l’attributo engines. Aprite il file package.json con un editor di testo e aggiornatelo in questo modo.
"engines": { "node": ">=5.6.0" }
Ora il vostro package.json dovrebbe avere questo aspetto.
Una volta impostato il bot, possiamo concentrarci sulla creazione della logica di base per le conversazioni con il bot stesso. Creiamo il file app.js, che rappresenterà il punto di ingresso del nostro bot.
Il file app.js dovrebbe contenere quanto segue.
var telegramBot = require('node-telegram-bot-api'); var token ='267449059:AAGzHJFlDkzOG5SxyOJJT2yHsiC06Ut6ySE'; var api = new ¬ telegramBot(token, {polling: true}); api.onText(//help/, function(msg, match) { var fromId = msg.from.id; api.sendMessage(fromId, "I can help you in getting the sentiments of any text ¬ you send to me."); }); api.onText(//start/, function(msg, match) { var fromId = msg.from.id; api.sendMessage(fromId, "They call me MadansFirstTelegramBot. " + "I can help you in getting the sentiments of any text you send to me."+ "To help you i just have few commands.n/helpn/startn/sentiments"); }); console.log("MadansFirstTelegramBot has started. Start conversations in your ¬ Telegram.");
Ora esaminiamo questo codice una riga per volta. Per prima cosa viene referenziato il pacchetto node che abbiamo installato prima con npm.
var telegramBot = require('node-telegram-bot-api');
Una volta impostato il riferimento, siamo collegati al bot. Avremo in precedenza chiesto a BotFather un token per permettere al nostro bot di accedere alle API per i bot di Telegram; qui ci riferiremo allo stesso token, come nella schermata seguente.
var token ='267449059:AAGzHJFlDkzOG5SxyOJJT2yHsiC06Ut6ySE'; var api = new telegramBot(token, {polling: true}); });
Ora abbiamo un handle per interagire con il bot, tramite il token e le API per i bot. Vediamo come iniziare la conversazione con il bot. Per avviare un bot, Telegram utilizza il comando /start. Quando viene immesso tale comando, il bot dovrebbe presentarsi e chiederci come possa rendersi utile. Lo scopo viene raggiunto da questa porzione di codice.
api.onText(//start/, function(msg, match) { var fromId = msg.from.id; api.sendMessage(fromId, "They call me MadansFirstTelegramBot. " + "I can help you in getting the sentiments of any text you send to me."+ "To help you i just have few commands.n/helpn/startn/sentiments"); });
In sostanza, il codice indica al bot che, se un utente invia il comando /start, dovrà inviare un messaggio di risposta con l’aiuto del metodo api.onText().
Ora avviamo il programma Node.js per iniziare la conversazione con il bot.
A questo punto, aprite la versione web di Telegram dal vostro account.
Conversare con il nostro semplice bot Telegram
Cercate il bot appena creato e collegato usando il suo nome, come nella schermata seguente.
Fate clic sul pulsante AVVIO e questo provocherà l’invio al bot del comando /start per iniziare la conversazione. Nella figura seguente vedete che il bot ha risposto al comando /start.
In effetti è stato eseguito ciò che abbiamo inserito nel file app.js per il comando /start e, tramite le API per i bot di Telegram, abbiamo ottenuto la visualizzazione della risposta.
Ora fate clic su /help o digitate /help per il vostro bot. La sua risposta al comando /help sarà la seguente, ovvero quella che abbiamo inserito nel programma Node.js.
Dato che dietro le quinte è in esecuzione il programma Node.js da app.js, il bot risponde ai comandi in base a ciò che è stato programmato in app.js.