Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bot Telegram + Google Agenda

Bot completo em Node.js + TypeScript para monitorar sua Google Agenda, enviar notificações automáticas, mostrar um menu organizado no Telegram e gerar relatório semanal.

Recursos

  • menu com botões inline
  • agenda do dia
  • próximo evento
  • relatório semanal
  • alerta automático antes dos compromissos
  • resumo diário automático
  • relatório semanal automático
  • configurações persistidas localmente em JSON
  • integração com Google Calendar via OAuth2
  • sem custo de infraestrutura obrigatória

Stack

  • Node.js
  • TypeScript
  • Telegraf
  • Google Calendar API
  • persistência local em JSON
  • Cron jobs com cron
  • Luxon para datas e timezone

Fluxo do bot

  1. você autentica a conta Google uma vez
  2. o bot monitora sua agenda automaticamente
  3. ele envia:
    • resumo diário
    • alerta antes dos eventos
    • relatório semanal
  4. você controla tudo por menu

Estrutura

src/
  bot/
  config/
  db/
  google/
  jobs/
  services/
  types/
  utils/
scripts/
data/

Pré-requisitos

  • Node.js 20+
  • conta no Telegram
  • bot criado no BotFather
  • projeto Google Cloud com Calendar API habilitada

1. Instalação

npm install

2. Variáveis de ambiente

Copie o arquivo de exemplo:

cp .env.example .env

Preencha:

TELEGRAM_BOT_TOKEN=SEU_TOKEN
TELEGRAM_ALLOWED_CHAT_ID=SEU_CHAT_ID
GOOGLE_CLIENT_ID=SEU_CLIENT_ID
GOOGLE_CLIENT_SECRET=SEU_CLIENT_SECRET
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
GOOGLE_CALENDAR_ID=primary
APP_TIMEZONE=America/Campo_Grande
AUTH_SERVER_PORT=3000
DEFAULT_ALERT_MINUTES=30
WEEKLY_REPORT_DAY=1
WEEKLY_REPORT_HOUR=7
WEEKLY_REPORT_MINUTE=0
DAILY_DIGEST_HOUR=7
DAILY_DIGEST_MINUTE=0
CHECK_EVENTS_EVERY_MINUTES=1
DATA_DIR=./data
TOKENS_PATH=./data/google-tokens.json

3. Como descobrir seu chat id do Telegram

Você pode usar um bot auxiliar como @userinfobot no Telegram e pegar o ID do seu usuário.

4. Configuração no Google Cloud

Habilite a API

  • acesse o Google Cloud Console
  • crie um projeto
  • habilite a Google Calendar API

Crie credenciais OAuth

  • vá em APIs e serviços > Credenciais
  • crie um OAuth Client ID do tipo Web application
  • adicione este redirect URI:
http://localhost:3000/oauth2callback

5. Autenticar no Google

npm run auth

O script vai:

  • subir um servidor HTTP local na porta definida
  • mostrar um link para login
  • salvar os tokens em data/google-tokens.json

6. Rodar em desenvolvimento

npm run dev

7. Build e produção local

npm run build
npm start

Menu do bot

  • /start
  • /menu
  • /hoje
  • /proximo
  • /semanal

O que o menu permite

  • ver a agenda do dia
  • consultar o próximo compromisso
  • gerar relatório semanal
  • ativar ou desativar:
    • alertas automáticos
    • resumo diário
    • relatório semanal
  • ajustar antecedência do alerta para 15, 30 ou 60 minutos

Exemplo de conversa

Tela inicial

🤖 Central da sua Google Agenda

Use o menu abaixo para:
• ver agenda do dia
• consultar o próximo compromisso
• gerar relatório semanal
• ajustar notificações automáticas

Hoje

📅 Agenda de hoje (17/04/2026)

• 08:00–09:00 — Daily com equipe
• 10:30–11:30 — Reunião com cliente
• 14:00–15:00 — Revisão técnica

Próximo evento

📌 Reunião com cliente
🗓️ 17/04/2026 às 10:30 até 11:30
📍 Google Meet
🔗 https://calendar.google.com/...

Alerta automático

⏰ Evento em 30 min

📌 Revisão técnica
🗓️ 17/04/2026 às 14:00 até 15:00
📍 Sala 2

Relatório semanal

📊 Relatório semanal (14/04 - 20/04)

Total de eventos: 9
Com horário: 8
Dia inteiro: 1

• segunda-feira, 14/04
  • 08:00–09:00 — Daily com equipe
  • 15:00–16:00 — Planejamento

• terça-feira, 15/04
  • 10:00–11:00 — Alinhamento

Observações técnicas

  • o projeto está preparado para um usuário e um chat autorizado
  • o estado local fica salvo em data/store.json
  • ideal para uso pessoal sem custo
  • os jobs automáticos rodam enquanto o processo Node estiver ativo
  • se quiser deixar 24h online sem custo, você pode rodar em uma máquina sua

Próximas melhorias

  • multiusuário com SQLite ou PostgreSQL
  • parser de linguagem natural para criar eventos
  • comando para criar/remarcar/excluir evento
  • integração com OpenAI para interpretar mensagens como “marca reunião amanhã às 14h”
  • envio de relatório em HTML ou PDF

Bibliotecas e referências

A implementação segue o uso do client oficial do Google para Node.js e do fluxo OAuth2 recomendado para apps de servidor, além do ecossistema atual do Telegraf e de cron jobs em Node.js. citeturn725752search1turn725752search7turn725752search10turn725752search2

About

No description or website provided.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages