Hospedar um bot do Telegram
Long polling como worker ou webhook com HTTPS automático, com Telegraf, grammY, python-telegram-bot ou aiogram.
O Telegram entrega as mensagens de dois jeitos, e o Hydro tem um tipo de aplicação para cada um:
| Modo | Tipo da aplicação | Quando usar |
|---|---|---|
| Long polling | Worker | O mais simples: o bot busca mensagens novas o tempo todo, sem endereço |
| Webhook | Web | Bots muito usados: o Telegram chama o seu endereço HTTPS a cada mensagem |
Long polling (worker)
import os
from telegram.ext import Application, CommandHandler
async def start(update, context):
await update.message.reply_text("Olá!")
app = Application.builder().token(os.environ["TELEGRAM_BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()Crie uma aplicação Worker, cadastre TELEGRAM_BOT_TOKEN como segredo em Variáveis e faça o deploy.
Workers rodam uma cópia por vez, inclusive no deploy, então não aparece o erro Conflict: terminated by other getUpdates request. Se ele aparecer, o bot está rodando também em outro lugar (como o seu computador).
Webhook (web)
- Crie uma aplicação Web. Ela ganha um endereço
https://<subdomínio>.acq.latcom HTTPS automático (ou use um domínio próprio). - A aplicação precisa escutar em
0.0.0.0, na porta da variávelPORT. - Depois do deploy, registre o endereço no Telegram:
curl "https://api.telegram.org/bot<TOKEN>/setWebhook?url=https://<subdomínio>.acq.lat/webhook"Use um caminho difícil de adivinhar ou o parâmetro secret_token do setWebhook para conferir que a chamada veio do Telegram.
Bibliotecas
- Node.js: Telegraf ou grammY, iniciados pelo script
startdopackage.json. - Python: python-telegram-bot ou aiogram, com um
main.pyna raiz e as dependências norequirements.txt.