Creare un semplice bot Telegram in Go

Saprete sicuramente cos'è Telegram, e saprete anche che su Telegram esistono i bot - ovvero dei risponditori automatici.

Ma come fare a creare uno di questi bot?

Quanto è difficile?

Bene, non è particolarmente difficile ma bisogna avere qualche conoscenza di programmazione e avere un server/computer dove fare girare il programma che piloterà il vostro bot.

Ho scelto di utilizzare Golang, o abbreviato Go, per farvi vedere come fare.
La scelta è stata dettata dal fatto che è un buon compromesso tra l'efficienza e la semplicità di scrittura.
Per chi non lo conoscesse, Go è il linguaggio compilato presentato da Google qualche anno fa, avrete bisogno di installarlo sulla vostra macchina per poter compilare il codice e generare l'eseguibile.


Per installare Go su Windows seguite questa guida: http://www.wadewegner.com/2014/12/easy-go-programming-setup-for-windows/

Per installare Go su Linux cercate su Google con il nome della vostra distribuzione, molto probabilmente lo troverete nei repository ufficiali.


Una volta installato siamo pronti per iniziare.

Per semplificarci la vita useremo una libreria già pronta per interfacciarci con le API di Telegram.
Per installarla aprite il terminale (o prompt dei comandi) e digitate:

go get gopkg.in/telegram-bot-api.v4.

Adesso scaricate il file scheletro che ho già preparato per voi da questo link: https://gist.github.com/Pitasi/5e127825ab9538191617686b693fc41f.

Date un'occhiata al file, si inizia importando i moduli che ci serviranno:

  • log, per poter stampare errori e qualche output.
  • regexp, per poter capire quando un messaggio è un comando.
  • telegram-bot-api, la libreria per Telegram.

Dopodiché troverete qualche opzione da configurare come il token del vostro bot (ottenetene uno contattando @BotFather) e la lista dei comandi supportati dal vostro bot.

Questa lista è molto importante e deve essere del tipo: "/nome_comando": nome_funzione,.

Nel file troverete già impostato un comando di esempio /ciao con il suo relativo handler ciao_handler.

Gli handler dei comandi devono prendere esattamente un parametro *m tgbotapi.Message, che rappresenterà l'oggetto messaggio che ha attivato questo handler.

Nel nostro esempio, l'handler di /ciao crea un nuovo oggetto messaggio di risposta con testo "Heilà :)", dopodiché fa in modo che sia una risposta al comando inviato dall'utente settando ReplyToMessageID all'id del messaggio ricevuto. Infine il messaggio viene mandato.

Il resto del codice può non essere toccato ai fini del bot, ma potete controllarlo per capire come funziona seguendo i commenti che ho inserito.

A questo punto vi basterà eseguire il bot con
go run nomefile.go.


Aggiungere nuovi comandi è semplicissimo e avete praticamente il libero arbitrio su come processare il messaggio originale, quindi beh, divertitevi!