Skip to content

i-JSS/Academic-Schedule-Bot

 
 

Repository files navigation

Academic Schedule Bot

Kotlin Gradle PostgreSQL Telegram

GitHub last commit GitHub repo size

Um bot para o Telegram que gera automaticamente todas as grades horárias válidas, resolvendo conflitos de agendamento de intervalos com uma abordagem de Algoritmo Guloso.

Ver Apresentação - Reportar Bug

Screenshots

Iniciando o bot Escolhendo matérias

Sobre o Projeto

O Academic Schedule Bot é um chatbot para a plataforma Telegram que resolve o clássico problema de Maximização de Agendamento de Intervalos no contexto acadêmico. A partir de um conjunto de matérias e seus respectivos horários, o bot aplica uma estratégia gulosa para gerar todas as combinações de grade sem conflitos — ajudando estudantes a planejar o semestre de forma prática e eficiente.

Este projeto foi desenvolvido como parte da disciplina de Projeto de Algoritmos na Universidade de Brasília (UnB), com foco em algoritmos gulosos e escalonamento com restrições.


Funcionalidades

  • Geração de todas as grades horárias válidas e sem conflitos
  • Algoritmo guloso para escalonamento eficiente de intervalos
  • Interface interativa via Telegram
  • Armazenamento de matérias e horários em PostgreSQL
  • Validação e detecção de conflitos em tempo real

Tecnologias Utilizadas

Camada Tecnologia
Linguagem Kotlin
Build Gradle (Kotlin DSL)
Banco de Dados PostgreSQL
Plataforma do Bot Telegram Bot API
Algoritmo Greedy / Interval Scheduling

Como Executar

Pré-requisitos

  • JDK 17+
  • Gradle
  • PostgreSQL
  • Token de Bot do Telegram (via @BotFather)

Passo a passo

1. Clone o repositório

git clone https://github.com/i-JSS/Academic-Schedule-Bot.git
cd Academic-Schedule-Bot

2. Restaure o banco de dados

Faça o download do dump SQL e restaure-o em um banco PostgreSQL chamado greed:

psql -U postgres -c "CREATE DATABASE greed;"
psql -U postgres -d greed -f postgres_localhost-2025_01_18_12_54_32-dump.sql

3. Crie o usuário do banco

CREATE ROLE kd_user LOGIN PASSWORD 'pa';
GRANT ALL PRIVILEGES ON DATABASE greed TO kd_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO kd_user;

4. Compile o projeto

./gradlew build

5. Configure o token do bot

# Linux / macOS
export BOT_TOKEN=seu_token_aqui

# Windows (PowerShell)
$env:BOT_TOKEN = "seu_token_aqui"

6. Execute

Rode a função main e acesse o bot em @UnBHorarios_bot.


Algoritmo

A lógica de escalonamento é baseada no problema de Maximização de Agendamento de Intervalos — um algoritmo guloso clássico que seleciona o maior número de intervalos não sobrepostos. Neste contexto:

  • Cada matéria é mapeada para um ou mais intervalos de tempo
  • A estratégia gulosa percorre os intervalos ordenados e elimina conflitos
  • Todas as combinações válidas e sem conflito são retornadas ao usuário

Complexidade: O(n log n) para ordenação + O(n) para seleção por combinação.


Autores

Matrícula Aluno
22/1007814 André Emanuel Bispo da Silva
22/1008150 João Antonio Ginuino Carvalho

Feito com <3 na Universidade de Brasília

About

Telegram bot that generates all valid academic schedules using a Greedy Interval Scheduling algorithm. Built with Kotlin, Gradle, and PostgreSQL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PLpgSQL 99.4%
  • Kotlin 0.6%