FilmFeed è un bot di telegram che fornisce varie informazioni sul mondo del Cinema per il panorama italiano. Le funzionalità principali mostrano i film in arrivo /upcoming, i film attualmente in sala /nowplaying e permette di ricercare uno specifico film con /search o @filmfeedbot.
FilmFeed è scritto interamente in JavaScript con Node.js, si basa su Express.js e telegraf.js, un framework per bot di Telegram.
Tutte le informazioni relative ai film sono ottenute tramite il servizio API di TMDb
In locale (da bash):
npm install
Usare il codice relativo al polling e non alle webhook:
// webhook
//app.use(bot.webhookCallback('/' + TELEGRAM_TOKEN));
//bot.telegram.setWebhook(HEROKU_APP_URL + TELEGRAM_TOKEN);
...
// polling
bot.startPolling();
Creare un file config-local.js: copiando la struttura di config.js, aggiungere in chiaro i dati riguardanti le chiavi per le API di telegram e TMDb, altrimenti, da bash, creare direttamente in locale le variabili d'ambiente impostando il valore delle chiavi.
Eseguire il bot
node index.js
( per implementare e testare le nuove feature suggerisco l'uso di un bot apposito, in modo da mantenere sempre attivo il bot principale )
Il deploy di FilmFeed è stato fatto su Heroku.
Per farlo dovete accertarvi di avere il Procfile all'interno del vostro progetto. Potete aggiungere direttamente su Heroku le variabili d'ambiente in "la vostra app" > Settings > Config Vars ( in questo caso sarà neccessario anche salvare in URL l'url della nostra applicazione, che ci verrà fornito da heroku )
Per permettere lo scambio di informazioni fra il nostro bot e Telegram useremo delle webhook, il codice necessario è il seguente e si trova nel file app.js
// webhook
app.use(bot.webhookCallback('/' + TELEGRAM_TOKEN));
bot.telegram.setWebhook(HEROKU_APP_URL + TELEGRAM_TOKEN);
Una volta fatto il deploy su Heroku, se il package.json e il Procfile sono presenti e scritti correttamente, lo stesso Heroku si arrangerà ad eseguire il codice.
Il deploy può essere fatto da console scaricando la Heroku CLI o da Github collegando all'applicazione su Heroku la repo su Github e aggiornando da Heroku ("la mia app" > Deploy).
/nowpalying: recupera i dati riguardanti i film in sala in questo momento, li restiutisce all'utente. Se il film è uscito da meno di 2 settimane viene aggiunto il badge 🆕.
/upcoming: recupera i dati riguardanti i film in arrivo, li riordina in ordine crescente di data e li restituisce tramite messaggio.
/search: aggiungendo del testo dopo il comando /search, è possbile cercare uno specifico film ( esempio: /search inception )
/chooseforme: è un'idea da implementare in futuro, questo comando dovrebbe permettere di consigliare l'utente tramite la ricerca di un insieme di film con determinati parametri (voto, data di rilascio, genere, ...)
@filmfeedbot: simile a /search nello scopo, questo comando sfrutta la inline mode per cercare un film
Altre funzionalità:
Visualizzazione di una scheda descrittiva da browser sotto il path /info. La richiesta HTTP verrà gestita da express che caricherà un file .ejs e i dati del film. All'url viene applicata una query con attributo id che dovrà contenere il valore dell'id del film.