Configurare un gateway tra IRC e Telegram

Guida completa in italiano per utilizzare Teleirc

Videoguida

Ecco come creare un gateway di collegamento tra IRC (sistema per chattare che ha avuto un boom un po’ di anni fa) e Telegram (app di messaggistica nata nel 2013).

Può esserci utile nel caso in cui abbiamo un canale IRC ed uno Telegram sullo stesso argomento/per lo stesso progetto e non vogliamo disperdere messaggi tra i due.

Per questo tutorial utilizzeremo Teleirc di FruitieX, anche se ci sono diversi fork e versioni (come quello di RITlug).

Per questa guida (e videoguida allegata) utilizzeremo Ubuntu 16.04 LTS su un Droplet di DigitalOcean. Utilizzando questo link avrete 10$ di credito se vi iscrivete per la prima volta.

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

Passaggi preliminari

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

In questo articolo spiegheremo solo come fare su Debian e derivati (vedi 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

Solo su Ubuntu è necessario dare questo comando (a detta della guida ufficiale) che potrebbe anche non funzionare (ho testato e ci sono problemi):
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 visto che comunque è un progetto separato.

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

Computer: macchina progettata per velocizzare e automatizzare gli errori.
–Anonimo

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. 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 preferibilmente 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 provare un servizio (da posizionare in /etc/systemd/system ) ma non vi garantisco niente. Trovate un esempio dell’autore qui. Io ci ho rinunciato ormai e uso l’ottimo screens.

Note finali

Vi consiglio di leggere attentamente queste note finali perché contengono alcune informazioni importanti.

Per accedere al gruppo di supporto del Teleirc che stiamo usando noi basta digitare teleirc --join-tg .

Le prime volte che utilizziamo Teleirc è molto utile usare teleirc -vvv per vedere un debug di quello che succede e degli eventuali problemi sorti in modo da poterli risolvere meglio.

Se qualcosa può andar male, andrà male.
Legge di Murphy

È importante non killare il processo forzatamente ma solo con CONTROL+A altrimenti il webserver rimarrà in ascolto e sarà impossibile riprendere teleirc se non con un riavvio del sistema.

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 l’effettivo accesso ai messaggi come impostazione per la privacy)rAltra 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. Se quest’articolo sarà servito a qualcosa (fatemi sapere nelle risposte) molto probabilmente creerò anche io una miniguida per utilizzare Imgur collegato a questo bot.

Tramite regex è possibile configurare quali messaggi devono essere inviati a IRC da Telegram (e viceversa) e quali no. Trovate l’opzione alla fine del file di configurazione.


Grazie a tutti dell’attenzione, non dimenticatevi di mettermi un clap (solo se volete :-D) e di iscrivervi alla mia newsletter!

Fatemi sapere nei commenti come è andata e se avete avuto problemi.