Docs

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:

ModoTipo da aplicaçãoQuando usar
Long pollingWorkerO mais simples: o bot busca mensagens novas o tempo todo, sem endereço
WebhookWebBots muito usados: o Telegram chama o seu endereço HTTPS a cada mensagem

Long polling (worker)

main.py (python-telegram-bot)
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)

  1. Crie uma aplicação Web. Ela ganha um endereço https://<subdomínio>.acq.lat com HTTPS automático (ou use um domínio próprio).
  2. A aplicação precisa escutar em 0.0.0.0, na porta da variável PORT.
  3. 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 start do package.json.
  • Python: python-telegram-bot ou aiogram, com um main.py na raiz e as dependências no requirements.txt.

Nesta página