Telegram bot con NodeJs
Con NodeJs è possibile realizzare un bot per Telegram, un vero e proprio chatbot.
La procedura è molto semplice.
- Accedere a Telegram e creare un nuovo bot.
- Per farlo cercare il bot “botfather” ed iniziare una chat
- Eseguire il comando /newbot
- Seguire le istruzioni
- Si riceverà una API key (salvarla) e uno username
- Creare un nuovo progetto NodeJs:
git init
npm init
3. Creare un file conf.json
{
"key": "XXXXXXXXXXX",
"username": "USERNAMEBOT"
}
Inserire i dati ricevuti da BotFather
4. Eseguire:
npm install node-telegram-bot-api
A questo punto inserire il codice base del bot
const fs = require('fs');
const TelegramBot = require('node-telegram-bot-api');
const conf = JSON.parse(fs.readFileSync('conf.json'));
const token = conf.key;
const bot = new TelegramBot(token, { polling: true });
bot.on("message", (msg) => {
const chatId = msg.chat.id;
const text = msg.text;
if (text === "/start") {
bot.sendMessage(chatId, "Hello world");
}
});
A questo punto il bot è pronto per essere personalizzato.
Dall’analisi del testo delle richieste è in grado di restituire delle risposte.
E’ importante osservare l’oggetto chat Id: ogni nuova connessione è su una determinata chatId e quindi il bot è in grado di gestire contemporaneamente più chat attive.
Caratteristiche di un chatbot
Un chatbot ha alcune caratteristiche simili a quelle di un web server: è sempre attivo ed ascolta delle connessioni, e soprattutto espone dei servizi in base ad una richiesta utente.
Tuttavia è un prodotto software estremamente diverso:
- prima di tutto i client sono esseri umani e i contenuti sono essenzialmente testo o multimediali;
- un bot una volta stabilita una chat (con un determinato chatId) può autonomamente inviare messaggi, con relative notifiche sull’app Telegram;
- un bot può ricevere contenuti previsti per Telegram: testo, immagini, video (anche ripresi col cellulare), ma anche coordinate o contatti.
- un bot non è pensato per ricevere dati da client automatizzati. E’ possibile farlo, ma in quel caso è più conveniente usare un classico WebService (tramite HTTP o WebSockets).
- Non è necessario dare risposte in HTML o JSON o altri formati digitali: il client è in genere un essere umano, occorre usare linguaggio naturale.
- un bot deve essere sempre attivo, ma non ha bisogno di un server classico con ip pubblico. E’ tecnicamente anch’esso un client, che parla coi suoi utenti tramite i server Telegram.
- un bot richiede meno risorse di un web server.
Un chatbot è un prodotto che fa cose diverse da un sito web e soprattutto due sono interessanti:
- è più immediato di una applicazione web: non bisogna digitare url, è facile tenere traccia delle chat passate, basta digitare un comando;
- può inviare notifiche, cosa impossibile con le applicazioni web tradizionali.