Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatbot Clima Telegram

Chatbot no Telegram desenvolvido com N8N que informa a temperatura atual de qualquer cidade do Brasil. O usuario envia o nome da cidade no formato Cidade,UF,BR e recebe a temperatura em tempo real via API OpenWeather.

Testar o bot

Acesse o bot no Telegram: @luccas_clima_bot

Envie uma mensagem no formato Cidade,UF,BR:

Sao Paulo,SP,BR

E o bot responde:

🌤️ Agora em Sao Paulo (BR) o clima esta nublado com temperatura de 21°C.

Fluxo do Workflow

Receber Mensagem Telegram -> Formatar Entrada -> Consultar OpenWeather -> Validar Resposta
                                                                            |           |
                                                                        (sucesso)    (erro)
                                                                            |           |
                                                                    Montar Resposta  Enviar Erro
                                                                            |
                                                                    Enviar Temperatura
image

Descricao dos Nodes

  1. Receber Mensagem Telegram - Telegram Trigger que captura mensagens de texto enviadas ao bot
  2. Formatar Entrada - Code node (JavaScript) que normaliza o texto: remove espacos, converte para minusculo, remove acentos e monta a variavel queue no formato cidade,uf,pais
  3. Consultar OpenWeather - HTTP Request que chama https://api.openweathermap.org/data/2.5/weather com os query parameters q, units (metric), lang (pt_br) e appid
  4. Validar Resposta - IF node que verifica se o status HTTP e 200 e se o campo de temperatura existe
  5. Montar Resposta - Code node que extrai nome da cidade, temperatura (arredondada) e descricao do clima, montando a mensagem final
  6. Enviar Temperatura - Telegram Send Message com a resposta formatada em caso de sucesso
  7. Enviar Erro - Telegram Send Message com mensagem amigavel em caso de erro

Pre-requisitos

  • Docker e Docker Compose instalados
  • Token de bot do Telegram (via @BotFather)
  • API Key do OpenWeatherMap (gratuita)

Variaveis de ambiente

Variavel Descricao
OPENWEATHER_API_KEY Chave de API do OpenWeatherMap
TELEGRAM_BOT_TOKEN Token do bot gerado pelo @BotFather

Como executar

1. Clonar o repositorio

git clone https://github.com/luccasfraga/chatbot-telegram.git
cd chatbot-telegram

2. Obter credenciais

Telegram Bot Token

  1. Abra o Telegram e procure por @BotFather
  2. Envie /newbot
  3. Defina um nome e um username terminado em bot
  4. Copie o token fornecido

OpenWeatherMap API Key

  1. Acesse https://home.openweathermap.org/users/sign_up e crie a conta
  2. Confirme o email
  3. Va em https://home.openweathermap.org/api_keys e copie sua key
  4. A chave pode demorar ate 2 horas para ser ativada

3. Criar arquivo .env

Crie um arquivo .env na raiz do projeto:

OPENWEATHER_API_KEY=sua_api_key_aqui
TELEGRAM_BOT_TOKEN=seu_token_aqui

4. Subir o N8N via Docker

O docker-compose.yml inclui dois servicos:

  • n8n - plataforma de automacao
  • cloudflared - tunnel HTTPS necessario para o webhook do Telegram funcionar (o Telegram exige HTTPS)
docker-compose up -d

O N8N estara em http://localhost:5678

5. Obter a URL do tunnel e atualizar o webhook

docker logs cloudflared 2>&1 | grep trycloudflare.com

Copie a URL gerada (exemplo: https://inner-missed-highway-textbook.trycloudflare.com) e cole no docker-compose.yml na variavel WEBHOOK_URL. Depois reinicie o n8n:

docker-compose restart n8n

6. Importar o workflow no N8N

  1. Acesse http://localhost:5678 e crie sua conta
  2. Menu Create Workflow > seta ao lado > Import from File
  3. Selecione workflow-chatbot-telegram.json

7. Configurar credenciais

Credencial do Telegram

  1. Clique no node Receber Mensagem Telegram
  2. Em Credential to connect with, clique em Create New Credential
  3. Cole o Access Token do BotFather
  4. Salve
  5. Selecione essa mesma credencial nos nodes Enviar Temperatura e Enviar Erro

API Key do OpenWeather

  1. Abra o node Consultar OpenWeather
  2. Em Query Parameters, no campo appid, substitua SUA_OPENWEATHER_API_KEY_AQUI pela sua API key real
  3. Salve o workflow

8. Ativar e testar

  1. Clique em Save
  2. Ative o toggle Inactive -> Active no topo
  3. Abra o Telegram e mande uma mensagem pro seu bot:
    Sao Paulo,SP,BR
    

Exemplos de entrada

Entrada Resposta
Sao Paulo,SP,BR 🌤️ Agora em Sao Paulo (BR) o clima esta nublado com temperatura de 21°C.
Rio de Janeiro,RJ,BR 🌤️ Agora em Rio de Janeiro (BR) ...
Belo Horizonte,MG,BR 🌤️ Agora em Belo Horizonte (BR) ...
cidadeinvalida ❌ Cidade nao encontrada. Use o formato Cidade,UF,BR (ex.: Sao Paulo,SP,BR).

Estrutura do projeto

chatbot-telegram/
├── workflow-chatbot-telegram.json   # Workflow exportado do N8N
├── docker-compose.yml               # Docker Compose (N8N + cloudflared)
├── .env.example                     # Modelo de variaveis de ambiente
├── .gitignore                       # Arquivos ignorados pelo git
└── README.md                        # Este arquivo

Observacoes

  • O JSON do workflow nao contem credenciais - tokens e API keys devem ser configurados via N8N ou diretamente no node
  • O tunnel do cloudflared e apenas para desenvolvimento local. Em producao, use um dominio proprio com HTTPS
  • Versao do N8N testada: 1.106.3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors