Sommario
< Home
Stampa

Telegram bot con NodeJs

Con NodeJs è possibile realizzare un bot per Telegram, un vero e proprio chatbot.

La procedura è molto semplice.

  1. 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
  2. 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.