← All projects

RUBot

Telegram bot that serves the daily and weekly menu of UFPA's university restaurant by scraping the official site.

  • Java
  • Spring Boot
  • Telegram
  • Web Scraping
  • Docker

· github.com/carloscardoso05/rubot

Overview

RUBot is a Telegram bot that delivers the menu of the Restaurante Universitário (UFPA). The official menu lives on a static, mobile-unfriendly web page — RUBot scrapes it, formats it nicely, and answers with a single command. The bot is live at t.me/rub_pa_bot.

Daily menu

Weekly menu

Features

  • /hoje — today’s menu, formatted with emojis for readability.
  • /semana — the full week’s menu.
  • JSoup scraping with a 30-minute cache so the bot never hammers the source site.
  • Runs as a long-polling Spring Boot service, containerized with Docker.

Tech stack

  • Java 24 / Spring Boot 3.5
  • TelegramBots API
  • JSoup for scraping
  • Docker + Google Cloud Run deployment

Running locally

cp .env.example .env     # fill in BOT_KEY (BotFather token)
./mvnw spring-boot:run   # or: docker compose up --build

Why this project?

A real-world bot in production: it combines an external API (Telegram), a fragile third-party source (the official site), caching, and a containerized deployment — the kind of resilience work backend developers do daily.