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.