T-Bot

T-Bot √® un mio progetto open source, iniziato intorno alla fine del 2019 e primi mesi del 2020 e disponibile su GitHub, che principalmente ha come obiettivo quello di recuperare gli RSS feed e mandarli su canali o gruppi di Telegram. La single-page application consente di aggiungere e configurare bot. Ogni bot recupera la lista degli articoli da una sorgente RSS, valuta quali siano i nuovi articoli non ancora inviati ed eventualmente invia segmenti degli articoli su canali o gruppi di telegram. Il progetto √® nato nel periodo in cui ha iniziato a diffondersi la pandemia Covid-19, pertanto una delle caratteristiche desiderate fu quella di permettere ad un amministratore di configurare anche bot che interagiscono con l’utente. Tale funzionalit√† con il passare del tempo ha assunto sempre meno importanza, tuttavia a livello architetturale l’applicativo software √® stato pensato in modo modulare al fine di consentire al programmatore di progettare diverse tipologie di bot.

T-Bot consiste di 2 applicazioni, la prima ha come obiettivo quello di definire i bot di telegram (tbot-web) tramite un’interfaccia web e la seconda invece recupera tali definizioni di bot, carica in background i dati dalle sorgenti RSS feed e gli invia nei canali o gruppi di telegram (tbot-daemon). A livello architetturale vi sono 5 progetti: tbot-application, tbot-daemon, tbot-entities, tbot-web e tbot-parent. Il progetto tbot-application contiene l’implementazione dei servizi, i dto ed i mapper, mentre il progetto tbot entities contiene invece i Data Access Object e gli oggetti DB. Sia tbot-web che tbot-daemon fanno uso di tbot-application e tbot-entities. Il progetto tbot-parent √® la root degli altri 4 progetti e viene usata per buildare tutti i progetti e definire le dipendenze maven in comune a tutti i progetti.

La single-page applciation T-Bot web

T-Bot fa uso delle seguenti linguaggi/tecnologie: Java, Spring, Mapstruct, Liquibase, QueryDSL, Hibernate, TypeScript, Angular, MySQL. Al fine di interfacciarsi con Telegram, T.Bot utilizza la libreria TelegramBots. Per potere eseguire il modulo web oppure daemon è necessario clonare ed importare il progetto telegrambots come progetto maven di cui io ho fatto il fork (probabilmente apporterò delle modifiche in futuro).

Vedo che la versione 6 di telegrambots restituisce un errore in fase di check delle signature, pertanto aggiungere skip:

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<version>1.6</version>
				<configuration>
					<skip>true</skip>
				</configuration>
				<executions>
					<execution>
						<id>sign-artifacts</id>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

Nella vecchia configurazione facevo il deploy dell’applicativo software T-Bot su un dispositivo Raspberry PI usando wagon. Pertanto ci potrebbero essere dei residui di configurazione correlati a Raspberry PI.

Configurazione di T-Bot

Per configurare T-Bot leggere i seguenti paragrafi.

Database

I due progetti principali, ossia tbot-web e tbot-daemon, si interfacciano con un server MySQL. T-Bot di default cerca di recuperare i dati dallo schema tbot usando come username tbot e come password password.

Loggatura

Aggiungere i permessi di scrittura per others alla directory /var/log/tbot-logs.

sudo chmod o+w /var/log/tbot-logs

Sto sviluppando e quindi testando l’applicativo software T-Bot su una computer su cui vi √® installato Ubuntu 20.04 LTS e MySQL Community Server 8.0.29.