Uno stupido bot che aiuta a tenere il conto delle bottiglie prese dalla cantina, per evitare di doverlo fare a mano.
-
/aiuto- Mostra i comandi a disposizione, ovvero: -
/segna- Segna le bottiglie presa dalla cantina, chiedendo prima di quale tipo di vino. -
/controlla- Controlla le bottiglie rimanenti nella cantina. -
/cancella- Cancella l'operazione di segnatura delle bottiglie. -
/ciucciatori- Mostra chi ha preso più bottiglie. -
/mischiatutto- Mostra un consiglio per la miscelazione del vino. -
/se_semo_presi- Mostra chi ha preso cosa, ovvero quante bottiglie per ogni tipo di vino. -
me_so_sbajato- Cancella l'ultima segnatura fatta da un utente.
Per installare il bot è necessario avere Docker e Docker Compose installati sul proprio sistema.
- Clonare il repository
- Creare un file
source.jsonpartendo dal filesource.template.jsone inserire i dati relativi ai vini con relative quantità. - Creare un file
.envpartendo dal fileenv.templatee inserire il token del bot e ed i percorsi per:- la cartella che conterrà il database
- il file
source.jsonper initializzare il database
- Esportare il file
.envcome variabile d'ambiente con il comandoexport $(cat .env | xargs) - Eseguire il comando
docker-compose up -dper avviare il bot.
La versione di python utilizata è la 3.11, mentre la gestione delle dipendenze è affidata a Poetry alla versione 1.6.1.
La comunicazione con le API di Telegram è affidata alla libreria python-telegram-bot alla versione 20.6.
Il database utilizzato è un semplice sqlite3 alla versione 3.39.5, gestito tramite la libreria sqlite3 alla versione 3.12.0, inclusa nelle standard library di python.
Il database utilizza un singolo file wine.db e non ha un sistema di backup, dunque se si vuole garantire la persistenza dei dati è necessario eseguire un backup del file wine.db, previa interruzione del bot per un backup a freddo. Per sostituire il database con uno nuovo, è necessario interrompere il bot, rimuovere il file wine.db e riavviare il bot. Il docker compose prevede la creazione ed inizializzazione del database al primo avvio, grazie al file init_db.py, dunque non è necessario eseguire alcuna operazione per inizializzare il database, se non quella di creare il file source.json con i dati relativi ai vini.
- Aggiungere un controllo per evitare che il bot venga avviato senza il file
.envcontenente il token del bot. - Aggiungere un controllo per evitare che il bot venga avviato senza il file
source.jsoncontenente i dati relativi ai vini. - Migliorare il logging e la gestione degli errori.
- Aggiungere un sistema per salvare i log in un file o in un database.
- Aggiungere un controllo sulla quantità di bottiglie rimanenti prima di segnare una bottiglia. Se non ce ne sono, avvisare l'utente.