Categorie
Guide Informatica Telegram

Configurare un gateway tra IRC e Telegram

Guida completa in italiano per utilizzare Teleirc

Come possiamo creare un gateway di collegamento tra IRC (sistema per chat testuali in giro da un po’ di anni) e Telegram (app di messaggistica nata nel 2013)? Creare una cosa del genere può esserci per esempio utile nel caso in cui abbiamo un canale IRC ed uno Telegram sullo stesso argomento/per lo stesso progetto e non vogliamo disperderne i messaggi.

Per questo tutorial utilizzeremo Teleirc di FruitieX, anche se ci sono diversi fork e versioni simili (come quello di RITlug) su Ubuntu 16.04 LTS (tramite Droplet di DigitalOcean).

Per comodità

Registriamoci, clicchiamo “Create droplet” e selezioniamo i dettagli.

Passaggi preliminari

Prima di tutto, installiamo node.js. Utilizziamo il nostro package manager. Qui una guida che spiega come installarlo su tutti i vari sistemi.

In questo articolo vedremo solo come fare su Debian e derivati (per esempio Ubuntu) e per Enterprise Linux e Fedora.

Per Debian e derivati

Diamo i due comandi:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Secondo la guida ufficiale, su Ubuntu è necessario dare anche questo comando:
sudo apt-get install libicu-dev

Per Enterprise Linux e Fedora

Diamo inizialmente il comando:

curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -

Dopo installiamo con sudo yum -y install nodejs

Verifica dell’installazione

Per controllare di averli installati correttamente, verifichiamo la loro effettiva presenza:

node -v
npm -v

Aggiornamento di NPM

Nonostante sia installato automaticamente con Node.js, può essere utile aggiornare NPM all’ultima versione.

npm install npm@latest -g

Installazione di Teleirc

Installiamo Teleirc digitando sudo npm install -g teleirc

Subito dopo creiamo il file di configurazione teleirc --genconfig, se ci sono problemi in questa fase usiamo il fixme dell’autore digitando mkdir ~/.teleirc

Problemi supplementari

Ebbene, durante l’installazione di teleirc possono verificarsi degli errori, uno di questi riguarda node-gyp. Se vi capita un errore del genere, seguite la procedura:

Aggiornamento di Node.js e npm

sudo npm cache clean -f
sudo npm install -g n
sudo n 4.4.5
sudo npm install npm -g

Rimozione di moduli node-gyp addizionali

sudo npm uninstall node-gyp -g
sudo npm uninstall node-gyp

(Grazie Kala725, soluzione presa da lui qui.)

Configurazione di Teleirc

Se siamo riusciti ad eseguire l’installazione senza problemi procediamo ad eseguire la configurazione.

Creazione e configurazione del bot Telegram

Prima di tutto creiamo il bot su BotFather. Creiamo il nostro bot digitando /newbot e seguendo la procedura. Poi copiamo il token ricevuto nel messaggio ed incolliamolo nel file di configurazione che vedremo in questo passaggio.

Trovate qui un video su come personalizzarlo mentre qui un elenco già pronto di comandi da impostare (basta copiare ed incollare) quando si fa /setcommands.

Poi digitiamo /setprivacy, scegliamo il nome del nostro bot e clicchiamo Disable. In questo modo consentiremo al nostro bot Telegram di leggere i messaggi che inviamo nel gruppo e di inviarli a teleirc.

Configurazione di Teleirc

Facciamo cd ~/.teleirc ed apriamo dal nostro editor di testo preferito (io uso nano) il file config.js.

Per comodità ecco il comando nano config.js.

A questo punto ci ritroveremo con questo file di base di nome config.js, questa è una mia traduzione dei commenti fatta sulla base dell’ultima versione ad oggi. Vi consiglio di guardare sempre il repository ufficiale per la versione aggiornata.

Una volta che abbiamo configurato correttamente il bot, salviamo il file ed eseguiamo il comando teleirc. Finalmente, dopo tante peripezie, abbiamo fatto partire questo bot.

Vedrete entrare il bot con l’username che gli avete dato nel canale IRC che avete impostato.

Ma non è finita qui!

In alcuni casi, il bot potrebbe non aver acquisito correttamente il chatID del nostro gruppo e potrebbe richiederlo insistentemente su IRC. In questo caso dobbiamo inviare un messaggio qualsiasi sul nostro gruppo Telegram, eventualmente menzionando il bot utilizzando @usernamedelbot (quello che abbiamo impostato su BotFather).

Una volta aver visto il primo messaggio recapitato e nessun segnale controverso durante la sessione SSH (quindi vedendo solo uno spazio vuoto sotto al processo senza altri interruzioni e senza possibilità di eseguire altri comandi).

GNU screen

Ma se si chiudesse la sessione SSH? In questo caso non avremmo la possibilità di mantenere attivo il bot. Ci viene in aiuto GNU screens, ottimo strumento.

Digitiamo screen e subito dopo premiamo invio (ci uscirà una schermata di presentazione). Infine si aprirà una normalissima finestra SSH. Lì potremo digitare tutti i comandi che vogliamo che rimarranno in esecuzione anche dopo la chiusura del terminale (Attenzione! Chiudete il terminale, non killate la sessione)

Per recuperare la sessione basta digitare screen -r mentre per recuperare un elenco delle sessioni (per poi recuperarle se sono più di una) basta digitare screen -ls.

Con il riavvio le sessioni però si interromperanno.

Per questo motivo potete creare servizio per systemd, da posizionare in /etc/systemd/system, trovate un esempio dell’autore qui.

Note finali

Per accedere al gruppo di supporto di teleirc, basta ottenerne il link dando il comando teleirc --join-tg .

Per risolvere eventuali problemi, è possibile far entrare teleirc in modalità “verbose”, in modo che riporti tutti i log, anche quelli di debug, avviandolo con questo comando: teleirc -vvv.

È importante non terminare il processo forzatamente, ma chiuderlo solo con CONTROL + A.

Cosa importantissima, se riscontrate dei malfunzionamenti di qualsiasi tipo che riguardano l’invio dei messaggi da Telegram a IRC (Telegram =>IRC) vi consiglio di togliere e riaggiungere il bot, dopo aver verificato su @BotFather che l’opzione /SetPrivacy per il vostro bot sia su False.. Altra cosa importante, se non gradite che vengano caricate le immagini sul server, potete far sì che vengano caricate su Imgur, trovate una guida ufficiale qui.

È possibile anche impostare una regex per selezionare solo specifici messaggi da inoltrare da IRC a Telegram (e viceversa) e quali no. Trovate l’opzione alla fine del file di configurazione.


Spero che questa guida vi sia stata utile, è stata scritta qualche tempo fa quindi perdonate eventuali refusi e informazioni poco aggiornate! Fatemi sapere nei commenti come è andata e se state riscontrando problemi.