Breve appunto di come si ho fatto per fare un bot in java per telegram e di come l'ho fatto funzionare su tomcat8 e su jboss 10 + configurazione proxy.
Prima di tutto perche' un bot? Beh un bot che ti risponde su un'app di messaggistica istantanea ha delle potenzialita' notevoli, per esempio ti permette di interagire con l'applicativo senza essere loggato sull'applicativo stesso direttamente dal cellulare ovunque tu sia, e' una bella comodita'. Mi incuriosivano le potenzialita' del bot quindi mi sono detto: perche' no?
Primo passo:
le dipendenze. Se usate maven
(perche' proprio la 6 e non che ne so la 3? Per via del proxy...)
Secondo passo:
registrarsi usando BotFather
aprite telegram cercate BotFather
/start - per iniziare
BotFather vi dara' tutta una lista di comandi che puo' eseguire
manteniamoci sul semplice:
/newbot - vi permette di creare un nuovo bot
vi chiedera' il nome del bot, il nome utente e vi dara' un token
segnatevi tutto
Secondo passo:
creare il vostro bot ed estendere TelegramLongPollingBot
il nome della classe dev'essere il nome del bot
dovrete estendere due metodi
getBotUsername() che deve restituire l'username scelto
getBotToken() che deve restituire il token che vi ha dato il botdrino
io per comodita' mi creo un metodo statico per registrare il bot in modo da avere tutto il codice relativo al bot
in un punto solo
Terzo passo:
implementare onUpdateReceived
che e' il metodo che vi permette di rispondere a chi vi scrive
bene ragassuoli, questo e' il metodo piu' importante di tutti perche' vi permette di interagire con l'utente
(se lui scrive per primo)
Se volete che il bot scriva "suo sponte" a qualcuno dovete salvarvi il chat id da qualche parte
(io per sicurezza me lo faccio comunicare dall'utente che vuole interagire con il bot a mano, il bot su richiesta lo fornisce, l'utente se lo salva me lo da' a me io so chi e' etc)
non e' un metodo "obbligatorio" quindi la signature e' quella che vi pare a voi, basta che poi usiate la classe SendMessage e il metodo execute
Il bot puo' fare molto altro, puo' anche ricevere ed inviare contenuti multimediali tipo file immagini video etc. Quindi sbizzarritevi...
$NON_RICORDO_IL-NUMERO passo:
eseguire il bot.
- tramite main:
registrate il bot se deve solo rispondere non c'e' bisogno di fare altro. Finche' il main gira il bot sta su.
- tramite server:
in tomcat8 avevo un filtro dichiarato nel web.xml e il bot lo inizializzo li'
su jboss 10 ho creato un singleton da eseguire allo startup (quindi una sola volta mentre si avvia il server)
tramite le annotation
Penso (spero) sia tutto...