# Hospedar um bot do Telegram

URL: https://0.0.0.0:3002/docs/guias/bot-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) [#long-polling-worker]

```python title="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) [#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](/docs/aplicacoes#domínios-personalizados)).
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:

```bash
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 [#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`.
