Introdução: Por que automatizar respostas no Telegram?

Quer aprender a criar um bot no Telegram que responde automaticamente a mensagens? Se você gerencia um canal, um grupo de suporte ou simplesmente deseja um assistente pessoal, automatizar respostas com um bot pode economizar horas de trabalho repetitivo. Neste guia, vamos do zero até a implantação em produção, cobrindo conceitos fundamentais, escolha entre polling e webhook, implementação em Python e boas práticas de segurança. Não é necessário ser um expert em programação — ter familiaridade com Python básico e acesso à internet é suficiente.

A automação de respostas no Telegram é possível graças à Bot API, uma interface HTTP que permite que seu código interaja com o mensageiro. Você pode configurar seu bot para responder a comandos, palavras-chave ou até mesmo iniciar conversas. A comunidade de desenvolvedores é ativa e há bibliotecas maduras para várias linguagens. Vamos focar em Python com a biblioteca python-telegram-bot, mas os princípios se aplicam a qualquer linguagem.

Introdução: Por que automatizar respostas no Telegram?
Introdução: Por que automatizar respostas no Telegram?

Entendendo a API de Bots do Telegram

O que é um bot?

Um bot no Telegram é uma conta controlada por software, não por um humano. Ele pode receber e enviar mensagens, participar de grupos e interagir com usuários através de comandos como /start ou /help. Diferente de contas pessoais, bots precisam ser criados através do BotFather, o bot oficial do Telegram para gerenciamento de bots.

Token de acesso

Após criar um bot, você receberá um token único (exemplo: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11). Esse token é a chave para autenticar seu código na API. Mantenha-o em segredo — qualquer pessoa com o token pode controlar seu bot. A documentação oficial da Bot API está disponível em core.telegram.org/bots/api e é a referência definitiva para todas as funcionalidades.

Registrando seu bot com o BotFather

No Telegram, inicie uma conversa com BotFather. Envie o comando /newbot e siga as instruções: escolha um nome (exibido na lista de contatos) e um username (terminado em “bot”, como “MeuBotExemplo_bot”). O BotFather confirmará a criação e fornecerá o token. Anote o token em um local seguro. Se precisar de mais bots, repita o processo. Você pode gerenciar bots existentes com comandos como /mybots para editar descrição, foto ou command list.

Escolha entre Polling e Webhook

Antes de escrever código, você precisa decidir como seu bot receberá atualizações do Telegram. Existem duas abordagens principais:

Polling: seu código faz requisições periódicas ao servidor do Telegram para buscar novas mensagens. É simples de implementar e funciona bem em ambientes locais ou com pouca carga. Ideal para testes e bots com baixo volume de mensagens (menos de 100 por minuto). A desvantagem é o atraso entre polling requests (tipicamente 1 a 5 segundos) e maior consumo de API calls.

Webhook: o Telegram envia atualizações para uma URL pública que você fornece. É mais eficiente e quase instantâneo. Você precisa de um servidor com IP público e HTTPS (certificado SSL válido). Para desenvolvimento local, ferramentas como ngrok criam um túnel seguro. A documentação recomenda webhook para bots em produção. A configuração é feita com o método setWebhook.

Aviso

Se você escolher webhook e depois quiser voltar para polling, é necessário remover o webhook primeiro com deleteWebhook. Caso contrário, o polling não receberá atualizações.

Escolha entre Polling e Webhook
Escolha entre Polling e Webhook

Implementação básica com Python

Instalação e configuração

Usaremos a biblioteca python-telegram-bot, que é a mais popular e bem mantida. Instale com pip:

pip install python-telegram-bot

Crie um novo arquivo Python, por exemplo bot.py. Armazene o token em uma variável de ambiente para segurança:

import os
import logging

from telegram.ext import Application, CommandHandler, MessageHandler, filters

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

TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN')

Respondendo a mensagens de texto

Vamos criar um handler que responde a qualquer mensagem de texto com uma saudação personalizada. Primeiro, defina uma função de callback que recebe update e context:

import html

async def responder(update, context):
    user = update.effective_user
    text = update.message.text
    resposta = f"Olá {user.first_name}! Você disse: {html.escape(text)}"
    await update.message.reply_text(resposta)

Em seguida, configure o application com um handler para mensagens de texto:

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, responder))
    app.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == '__main__':
    main()

Execute o script localmente. Envie uma mensagem para seu bot — ele deve responder. O filtro ~filters.COMMAND evita que comandos como /start sejam tratados como texto comum.

Tratando comandos

Para responder a comandos como /start, use CommandHandler:

async def start(update, context):
    await update.message.reply_text("Bem-vindo! Use /ajuda para ver os comandos disponíveis.")

async def ajuda(update, context):
    await update.message.reply_text("Comandos: /start, /ajuda, /eco <mensagem>")

app.add_handler(CommandHandler('start', start))
app.add_handler(CommandHandler('ajuda', ajuda))

Para comandos com argumentos, como /eco Olá mundo, acesse context.args:

async def eco(update, context):
    if context.args:
        texto = ' '.join(context.args)
        await update.message.reply_text(texto)
    else:
        await update.message.reply_text("Use: /eco <mensagem>")

app.add_handler(CommandHandler('eco', eco))

Implantação

Hospedagem gratuita com escalonamento automático

Para manter seu bot funcionando 24/7, você pode usar plataformas como Render, Fly.io ou PythonAnywhere. Vamos usar Render como exemplo (camada gratuita com sleep após inatividade, mas suficiente para bots de baixo tráfego). Crie uma conta em render.com, conecte seu repositório GitHub e escolha o tipo de serviço (Web Service). No plano gratuito, o bot pode hibernar após alguns minutos sem atividade, mas acorda automaticamente ao receber uma nova requisição. Configure as variáveis de ambiente, incluindo o token, e faça o deploy. Com isso, seu bot estará disponível online, respondendo automaticamente aos usuários enquanto estiver ativo.