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.json
partendo dal filesource.template.json
e inserire i dati relativi ai vini con relative quantità. - Creare un file
.env
partendo dal fileenv.template
e inserire il token del bot e ed i percorsi per:- la cartella che conterrà il database
- il file
source.json
per initializzare il database
- Esportare il file
.env
come variabile d'ambiente con il comandoexport $(cat .env | xargs)
- Eseguire il comando
docker-compose up -d
per 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
.env
contenente il token del bot. - Aggiungere un controllo per evitare che il bot venga avviato senza il file
source.json
contenente 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.