> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Corrija NetworkError do python-telegram-bot com aiohttp

> NetworkError no python-telegram-bot: troque o backend httpx padrão pelo aiohttp com o AiohttpRequest do ptbcontrib, com exemplos de Bot e ApplicationBuilder.

Este guia troca o backend HTTP do `python-telegram-bot` (PTB) do `httpx`, o padrão, para o `aiohttp`. As duas são bibliotecas que fazem requisições HTTP. O backend `httpx` padrão pode lançar exceções `NetworkError` frequentes, como `ReadError`, em bots que fazem polling no Telegram por longos períodos, e trocar para o `aiohttp` é uma forma comum de fazê-las parar. Se o seu bot roda sem esses erros, você não precisa dessa mudança.

## Instale o ptbcontrib

Você precisa do Python e da biblioteca `python-telegram-bot`:

```bash theme={"system"}
pip install python-telegram-bot
```

Depois, instale o `ptbcontrib`, que oferece uma classe para lidar com as requisições feitas ao Telegram. O extra `aiohttp_request` dele também instala o `aiohttp`:

```bash theme={"system"}
pip install "ptbcontrib[aiohttp_request] @ git+https://github.com/python-telegram-bot/ptbcontrib.git@main"
```

Adicione as mesmas dependências ao seu `requirements.txt`, para que a Square Cloud as instale durante o deploy:

```txt requirements.txt theme={"system"}
python-telegram-bot
ptbcontrib[aiohttp_request] @ git+https://github.com/python-telegram-bot/ptbcontrib.git@main
```

## Troque o httpx pelo aiohttp

Importe o `AiohttpRequest` no arquivo em que você cria o client do bot:

```python theme={"system"}
from ptbcontrib.aiohttp_request import AiohttpRequest
```

Essa classe lida com todas as requisições ao Telegram no lugar do `httpx` padrão. Passe-a para o client do PTB como nos exemplos abaixo. Os dois leem o token do bot da variável de ambiente `TELEGRAM_BOT_TOKEN`, então ele nunca entra no seu código:

<CodeGroup>
  ```python Bot theme={"system"}
  import asyncio
  import os

  import telegram
  from ptbcontrib.aiohttp_request import AiohttpRequest


  async def main():
      bot = telegram.Bot(
          os.environ["TELEGRAM_BOT_TOKEN"],
          request=AiohttpRequest(),
          get_updates_request=AiohttpRequest(),
      )
      async with bot:
          print(await bot.get_me())


  if __name__ == '__main__':
      asyncio.run(main())
  ```

  ```python ApplicationBuilder theme={"system"}
  import logging
  import os

  from telegram import Update
  from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler
  from ptbcontrib.aiohttp_request import AiohttpRequest

  logging.basicConfig(
      format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
      level=logging.INFO
  )

  async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
      await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")

  if __name__ == '__main__':
      application = (
          ApplicationBuilder()
          .token(os.environ["TELEGRAM_BOT_TOKEN"])
          .request(AiohttpRequest(connection_pool_size=256))
          .get_updates_request(AiohttpRequest())
          .build()
      )

      start_handler = CommandHandler('start', start)
      application.add_handler(start_handler)

      application.run_polling()
  ```
</CodeGroup>

## Rode na Square Cloud

Crie um arquivo `squarecloud.app` na raiz do projeto. Para um bot cujo arquivo principal é o `main.py`:

```systemd squarecloud.app theme={"system"}
DISPLAY_NAME=My Telegram Bot
MAIN=main.py
MEMORY=512
VERSION=recommended
AUTORESTART=true
```

O seu ZIP contém o `main.py`, o `requirements.txt` e o `squarecloud.app`, sem o token.

Depois, defina o token como a variável de ambiente `TELEGRAM_BOT_TOKEN`: em **Configuração avançada**, no formulário de upload, na página **Variáveis de ambiente** da aplicação (e depois reinicie o bot), ou pela CLI:

```bash theme={"system"}
squarecloud app env set TELEGRAM_BOT_TOKEN=your_token_here
squarecloud app restart
```

Veja [Variáveis de ambiente](/pt-br/platform/environment-variables) para os detalhes, e o [tutorial de bot do Telegram](/pt-br/tutorials/bots/telegram) para o passo a passo completo do deploy.

## Próximos passos

<CardGroup cols={3}>
  <Card title="Bot do Telegram" icon="telegram" href="/pt-br/tutorials/bots/telegram">
    Crie, faça o deploy e teste um bot do Telegram do zero.
  </Card>

  <Card title="Variáveis de ambiente" icon="key" href="/pt-br/platform/environment-variables">
    Gerencie o token do seu bot e outros segredos.
  </Card>

  <Card title="A aplicação não inicia" icon="triangle-exclamation" href="/pt-br/platform/troubleshooting/app-wont-start">
    Corrija ModuleNotFoundError e outras falhas na inicialização.
  </Card>
</CardGroup>

## Gostou desse artigo?

* Criamos este conteúdo com o máximo de cuidado para oferecer a melhor ajuda possível.
  Se o artigo contribuiu de alguma forma, valorize nosso trabalho! Desenvolvedores já avaliaram a Square Cloud com **4,9/5 em 402 avaliações** no Google e Trustpilot: deixe a sua também! Isso nos ajuda a entender o que é mais importante para você.

<CardGroup cols={2}>
  <Card title="Google Reviews" icon="google" href="https://g.page/r/CYZenpQcDgTzEAI/review">
    Deixe sua avaliação no Google Reviews.
  </Card>

  <Card title="Trustpilot" icon="star" href="https://www.trustpilot.com/review/squarecloud.app">
    Deixe sua avaliação no Trustpilot.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.