O projeto Passarinho visa democratizar o acesso à informação da UFMG, centralizando dados e serviços dispersos em uma plataforma única. Utilizando o WhatsApp como canal de comunicação, o bot atua como um HUB de informações personalizadas para alunos da UFMG, com base em curso, interesses e preferências.
Este bot oferece:
- Acesso automatizado a informações institucionais.
- Consulta personalizada de cardápios do RU.
- Consulta de rotas dos ônibus internos da UFMG.
- Cadastro de usuários com segmentação por curso/interesse.
- Redirecionamento inteligente de mensagens de grupos.
- Experiência focada na praticidade, sem depender de portais web.
bot-whatsapp-ufmg/
│
├── bot/ # Lógica principal do bot e integração com WhatsApp
├── controllers/ # Controladores de fluxo e comandos
├── data/ # Dados (itinerários, siglas, fontes de cursos, fontes de interesses, etc)
├── repositories/ # Persistência e abstração de dados do usuário
├── services/ # Serviços de negócio (cadastro, onboarding, grupos, etc)
├── utils/ # Utilitários e mensagens centralizadas
├── package.json # Dependências e scripts do projeto
├── README.md # Documentação do projeto
└── LICENSE # Licença GPLv3[Usuário]
↓
[bot/index.js] → Baileys
↓
[controllers/] → [services/] → [repositories/ | data/]
↓
[utils/] → mensagens.js
- Cadastro e atualização de usuários.
- Consulta ao cardápio do RU.
- Redirecionamento de mensagens por curso/interesse.
- Consulta de itinerários internos da UFMG.
- Criação de figurinhas.
- Execução de tarefas automáticas com
node-cron.
- Comando:
/cadastrar - Etapas:
- Pergunta nome, curso, interesses, preferências de refeição/RU.
- Valida curso/interesse por similaridade.
- Salva no repositório.
Arquivo: cadastroService.js
- Comando:
/atualizar - Etapas:
- Mostra dados atuais.
- Permite alteração ou descadastro.
Arquivo: cadastroService.js
- Comando:
/cardapio - Etapas:
- Consulta preferências salvas.
- Usa Puppeteer para scraping.
- Retorna refeições dos RUs selecionados.
Arquivos: onboardingService.js, mensagens.js
- Comando exemplo:
Como vou do ICEX ao CAD 2? - Etapas:
- Normaliza origem/destino por siglas/similaridade.
- Retorna linhas e horários disponíveis.
Arquivos: internosService.js, siglasInternos.js
- Entrada: Mensagens em grupos temáticos.
- Processo: Encaminha para usuários com cursos/interesses relacionados.
Arquivo: grupoService.js
@whiskeysockets/baileys: Integração com WhatsApp.string-similarity: Validação por similaridade.puppeteer: Scraping de sites como o RU.node-cron: Agendamento de tarefas.wa-sticker-formatter: Criação de figurinhas.qrcode-terminal: Geração de QR code para login.
- Linguagem: Node.js (JavaScript)
- Persistência: Arquivos JSON (via repositórios)
- Agendamento:
node-cron - Scraping:
puppeteer - Mensagens: Centralizadas em
mensagens.js
- Node.js
- npm
git clone https://github.com/joaogfc/passarinho.git
cd bot-whatsapp-ufmg
npm install
npm start
⚠️ Após o primeiro login via QR Code, a pastaauth_info/será criada com as credenciais. Não compartilhe.
{
"nome": "João",
"curso": "Ciência da Computação",
"interesses": ["pesquisa", "tecnologia"],
"preferencias": {
"ru": ["RU Setorial I"],
"refeicao": ["almoço"]
}
}- Faça um fork.
- Crie uma branch:
git checkout -b minha-feature - Commit:
git commit -am 'Minha melhoria' - Push:
git push origin minha-feature - Crie um pull request.
Abra uma issue no GitHub ou envie um email para joaogfc4@ufmg.br
Licença MIT. Veja o arquivo LICENSE.
Agradecimento à equipe Baileys e aos colaboradores do projeto.
Colaborador principal: @joaov-tst