Skip to content

A telegram bot that messages you available vaccine appointments in the Lombardia region and allows you to book one

License

Notifications You must be signed in to change notification settings

fabifont/buchino

Repository files navigation

Buchino

Buchino è un bot telegram (@buchinobot) che ti notifica quando si liberano posti per il vaccino in Lombardia. Con l'ultimo aggiornamento buchino ti permette anche di prenotare l'appuntamento direttamente da telegram!

Chi sono e perchè ho realizzato questo bot

Sono Fabio Fontana, studente di informatica presso l'università di Genova. L'idea della realizzazione di questo bot è nata mentre cercavo di prenotare il vaccino e le prime date disponibili erano lontane di almeno un mese. Alcune persone mi hanno detto che giornalmente vengono disdetti molti appuntamenti ma non avevo il tempo di controllare ogni ora se fosse comparsa una nuova data disponibile. Così cercando online ho visto che Alberto Granzotto aveva sviluppato un bot che controllava le date disponibili in Veneto (@Serenissimo_bot). A quel punto ho deciso di realizzare un servizio simile per la Lombardia, da qui Buchino. Buchino funziona leggermente diversamente da Serenissimo in quanto i siti delle regioni sono diversi.

Per i più esperti: Le API del sito della regione Lombardia sono protette da RecaptchaV3, il quale non permette l'utilizzo tramite semplici richieste HTTP (a differenza del sito del Veneto). Non avevo intenzione di implementare un captcha solver, anche perchè generalmente sono lenti e a pagamento. Perciò ho deciso di fare scraping con Selenium con Firefox in modalità headless. Questo ovviamente ha un grande impatto sulla velocità del controllo che è notevolmente ridotta.

Dati richiesti

Buchino controlla la disponibilità di un appuntamento per il vaccino al tuo posto, perciò ha bisogno dei seguenti dati richiesti dal sito ufficiale della regione Lombardia:

  • numero tessera sanitaria
  • codice fiscale
  • provincia
  • comune
  • cap
  • numero di telefono

Informativa sulla privacy

  • i dati vengono utilizzati ESCLUSIVAMENTE per controllare la disponibilità di un appuntamento per la vaccinazione sul sito https://start.prenotazionevaccinicovid.regione.lombardia.it
  • è possibile cancellare tutti i dati con il comando /cancella
  • il codice del bot è opensource e chiunque può verificarne il funzionamento

Comandi e funzionamento

Di seguito sono elencati i comandi che puoi utilizzare nel bot:

  • /start: avvia il bot (non la ricerca)
  • /registra: avvia il processo di registrazione
  • /annulla: annulla il processo di registrazione/prenotazione
  • /stop: termina la ricerca e disabilita le notifiche
  • /reset: abilita nuovamente le notifiche
  • /cancella: cancella tutti i tuoi dati
  • /prenota: inizia il processo di prenotazione
  • /codice: effettua la richiesta del codice di conferma
  • /disponibili: mostra gli ultimi appuntamenti trovati
  • /info: stampa tutti i comandi ed informazioni aggiuntive

Quando un utente viene registato i suoi dati vengono salvati in un database per essere riutilizzati per la ricerca. Per ogni utente salvato nel database, in modo sequenziale, viene effettuata la ricerca dei posti. Se l'utente ha già prenotato un appuntamento le sue notifiche saranno disabilitate in quanto non è permesso cercare altre date (a patto che si annulli la prenotazione precedente). Per questo se si decidesse di annullare la prenotazione è necessario segnalarlo al bot in modo che questo possa tornare nuovamente ad effettuare la ricerca per tale utente. Una volta trovata la prima data il bot permette di effettuare la prenotazione direttamente da telegram.

Come contribuire

Documentazione

https://fabifont.github.io/buchino

Requisiti

Per contribuire allo sviluppo e al miglioramento del bot è richiesto:

  • firefox
  • geckodriver
  • mongodb

Inoltre sono necessarie le sequenti dipendenze in Python:

  • selenium
  • numpy
  • aiogram
  • mongoengine
  • codicefiscale
  • phonenumbers

Eseguire Buchino

  1. Avviare mongodb: systemctl start mongodb
  2. Lanciare init.py per inserire i dati statici come province, comuni e CAP (solo la prima volta):
    python3 -c "from init import init_places;init_places()"
    
  3. Creare il file config.ini basandosi su config.ini.example e inserendo il token del proprio bot
  4. Lanciare main.py per eseguire buchino: python3 main.py

Buildare la documentazione

  1. Installa pdoc3 se non lo hai già: pip install pdoc3
  2. Esegui pdoc -d google *.py doc/

Offrimi un caffè

paypal

About

A telegram bot that messages you available vaccine appointments in the Lombardia region and allows you to book one

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages