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.
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.
Receber Mensagem Telegram -> Formatar Entrada -> Consultar OpenWeather -> Validar Resposta
| |
(sucesso) (erro)
| |
Montar Resposta Enviar Erro
|
Enviar Temperatura
- Receber Mensagem Telegram - Telegram Trigger que captura mensagens de texto enviadas ao bot
- Formatar Entrada - Code node (JavaScript) que normaliza o texto: remove espacos, converte para minusculo, remove acentos e monta a variavel
queueno formatocidade,uf,pais - Consultar OpenWeather - HTTP Request que chama
https://api.openweathermap.org/data/2.5/weathercom os query parametersq,units(metric),lang(pt_br) eappid - Validar Resposta - IF node que verifica se o status HTTP e 200 e se o campo de temperatura existe
- Montar Resposta - Code node que extrai nome da cidade, temperatura (arredondada) e descricao do clima, montando a mensagem final
- Enviar Temperatura - Telegram Send Message com a resposta formatada em caso de sucesso
- Enviar Erro - Telegram Send Message com mensagem amigavel em caso de erro
- Docker e Docker Compose instalados
- Token de bot do Telegram (via @BotFather)
- API Key do OpenWeatherMap (gratuita)
| Variavel | Descricao |
|---|---|
OPENWEATHER_API_KEY |
Chave de API do OpenWeatherMap |
TELEGRAM_BOT_TOKEN |
Token do bot gerado pelo @BotFather |
git clone https://github.com/luccasfraga/chatbot-telegram.git
cd chatbot-telegram- Abra o Telegram e procure por @BotFather
- Envie
/newbot - Defina um nome e um username terminado em
bot - Copie o token fornecido
- Acesse https://home.openweathermap.org/users/sign_up e crie a conta
- Confirme o email
- Va em https://home.openweathermap.org/api_keys e copie sua key
- A chave pode demorar ate 2 horas para ser ativada
Crie um arquivo .env na raiz do projeto:
OPENWEATHER_API_KEY=sua_api_key_aqui
TELEGRAM_BOT_TOKEN=seu_token_aquiO 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 -dO N8N estara em http://localhost:5678
docker logs cloudflared 2>&1 | grep trycloudflare.comCopie 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- Acesse
http://localhost:5678e crie sua conta - Menu Create Workflow > seta ao lado > Import from File
- Selecione
workflow-chatbot-telegram.json
- Clique no node Receber Mensagem Telegram
- Em Credential to connect with, clique em Create New Credential
- Cole o Access Token do BotFather
- Salve
- Selecione essa mesma credencial nos nodes Enviar Temperatura e Enviar Erro
- Abra o node Consultar OpenWeather
- Em Query Parameters, no campo
appid, substituaSUA_OPENWEATHER_API_KEY_AQUIpela sua API key real - Salve o workflow
- Clique em Save
- Ative o toggle Inactive -> Active no topo
- Abra o Telegram e mande uma mensagem pro seu bot:
Sao Paulo,SP,BR
| 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). |
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
- 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