Como Criar um Bot para Telegram com Python

Tempo de leitura: 13 minutos
Ilustração de bot Telegram com Python

Criar um bot para Telegram com Python é uma das melhores formas de aprender programação enquanto desenvolve algo útil. Bots automatizam tarefas, respondem mensagens e podem até integrar serviços externos. O melhor de tudo? Você não precisa ser um especialista para começar.

Neste tutorial completo, você vai aprender desde a configuração inicial até a criação de um bot funcional. Vamos usar a biblioteca python-telegram-bot, que é a mais popular e bem documentada para esse tipo de projeto.

O Que é um Bot de Telegram?

Um bot de Telegram é um programa automatizado que funciona dentro do aplicativo. Ele pode responder comandos, enviar mensagens automáticas, processar dados e muito mais. Diferente de um aplicativo tradicional, o bot roda diretamente no Telegram, sem necessidade de instalação extra.

Os bots são extremamente versáteis. Empresas usam para atendimento ao cliente. Desenvolvedores criam para automatizar notificações. Alguns até transformam bots em jogos interativos ou assistentes pessoais.

O Telegram oferece uma API gratuita para criação de bots. Isso significa que qualquer pessoa pode criar o seu próprio sem custos. Python, por sua vez, é a linguagem perfeita para esse trabalho pela sua sintaxe simples e bibliotecas poderosas.

Preparando o Ambiente de Desenvolvimento

Antes de começar a programar, você precisa ter o Python instalado no seu computador. Se ainda não tem, confira nosso guia sobre como instalar Python no seu sistema operacional.

Também é importante ter um editor de código. O VS Code é uma excelente opção gratuita com suporte completo para Python. Você pode instalar extensões específicas que facilitam muito o desenvolvimento.

Recomendo também criar um ambiente virtual para o projeto. Isso mantém as bibliotecas organizadas e evita conflitos com outros projetos no seu computador.

Instalando a Biblioteca python-telegram-bot

A biblioteca que vamos usar se chama python-telegram-bot. Ela é mantida por uma comunidade ativa e oferece suporte completo à API do Telegram. Para instalar bibliotecas no Python, usamos o pip.

Abra o terminal ou prompt de comando e digite:

Bash
pip install python-telegram-bot

A instalação leva poucos segundos. Após concluir, você terá acesso a todas as funções necessárias para interagir com a API do Telegram de forma simples e direta.

Criando o Bot no Telegram com o BotFather

Todo bot no Telegram precisa ser registrado através do BotFather. Esse é o bot oficial da plataforma responsável por criar e gerenciar outros bots. O processo é rápido e totalmente gratuito.

Siga estes passos para criar seu bot:

  1. Abra o Telegram e pesquise por @BotFather
  2. Inicie uma conversa clicando em “Start” ou “Iniciar”
  3. Digite o comando /newbot
  4. Escolha um nome de exibição para o bot (pode conter espaços)
  5. Defina um nome de usuário único (deve terminar com “bot”)

Após completar esses passos, o BotFather enviará uma mensagem com o token de acesso. Esse token é como uma senha que permite seu código se conectar ao bot. Guarde-o em local seguro e nunca compartilhe publicamente.

Dica importante: Se o token vazar acidentalmente, use o comando /revoke no BotFather para gerar um novo imediatamente.

Escrevendo o Primeiro Código do Bot

Agora vem a parte mais interessante: programar o bot. Vamos começar com um exemplo simples que responde ao comando /start. Esse é o comando padrão que os usuários enviam quando iniciam uma conversa.

Crie um arquivo chamado bot.py e adicione o seguinte código:

Python
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

# Substitua pelo seu token
TOKEN = "SEU_TOKEN_AQUI"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Olá! Eu sou seu bot. Como posso ajudar?")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.run_polling()

if __name__ == "__main__":
    main()

Vamos entender cada parte do código. Primeiro, importamos as classes necessárias da biblioteca. O Update representa uma mensagem recebida. O Application gerencia todo o funcionamento do bot.

A função start é chamada quando alguém envia o comando /start. Ela recebe dois parâmetros: o update com informações da mensagem e o context com dados adicionais.

O método reply_text envia uma resposta para o usuário. Note que usamos await porque a biblioteca trabalha de forma assíncrona. Isso permite que o bot processe várias mensagens ao mesmo tempo.

Executando o Bot

Para rodar o bot, abra o terminal na pasta do arquivo e execute:

Bash
python bot.py

Se não houver erros, o bot estará funcionando. Abra o Telegram, procure pelo nome de usuário do seu bot e envie /start. Você deve receber a mensagem de boas-vindas imediatamente.

Adicionando Mais Comandos ao Bot

Um bot com apenas um comando é limitado. Vamos expandir as funcionalidades adicionando novos comandos. Cada comando executa uma ação diferente baseada na necessidade do usuário.

Confira o código atualizado com mais comandos:

Python
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

TOKEN = "SEU_TOKEN_AQUI"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Olá! Use /ajuda para ver os comandos disponíveis.")

async def ajuda(update: Update, context: ContextTypes.DEFAULT_TYPE):
    texto = """
Comandos disponíveis:
/start - Iniciar o bot
/ajuda - Ver lista de comandos
/info - Informações sobre você
/echo - Repetir sua mensagem
    """
    await update.message.reply_text(texto)

async def info(update: Update, context: ContextTypes.DEFAULT_TYPE):
    usuario = update.effective_user
    mensagem = f"Nome: {usuario.first_name}\nID: {usuario.id}"
    await update.message.reply_text(mensagem)

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    texto = " ".join(context.args)
    if texto:
        await update.message.reply_text(texto)
    else:
        await update.message.reply_text("Digite algo após o comando!")

def main():
    app = Application.builder().token(TOKEN).build()
    
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CommandHandler("ajuda", ajuda))
    app.add_handler(CommandHandler("info", info))
    app.add_handler(CommandHandler("echo", echo))
    
    app.run_polling()

if __name__ == "__main__":
    main()

O comando /info mostra dados do usuário que enviou a mensagem. Já o /echo repete o texto que o usuário digitar após o comando. Por exemplo: /echo Olá mundo retorna “Olá mundo”.

O parâmetro context.args é uma lista que contém todas as palavras digitadas após o comando. Usamos o método join para transformar essa lista em uma string única.

Respondendo Mensagens de Texto

Além de comandos, seu bot pode responder mensagens comuns. Isso é útil para criar bots conversacionais ou que processam informações específicas enviadas pelo usuário.

Para isso, usamos o MessageHandler:

Python
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

TOKEN = "SEU_TOKEN_AQUI"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Olá! Envie qualquer mensagem e eu vou responder.")

async def responder_texto(update: Update, context: ContextTypes.DEFAULT_TYPE):
    texto_recebido = update.message.text
    resposta = f"Você disse: {texto_recebido}"
    await update.message.reply_text(resposta)

def main():
    app = Application.builder().token(TOKEN).build()
    
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, responder_texto))
    
    app.run_polling()

if __name__ == "__main__":
    main()

O filtro filters.TEXT & ~filters.COMMAND significa: aceite mensagens de texto, mas ignore comandos. Isso evita que o bot responda duas vezes quando alguém envia um comando válido.

Usando Botões Interativos

Botões tornam a interação mais intuitiva. O Telegram oferece dois tipos: teclados inline (botões dentro da mensagem) e teclados de resposta (substituem o teclado padrão).

Veja um exemplo com botões inline:

Python
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Application, CommandHandler, CallbackQueryHandler, ContextTypes

TOKEN = "SEU_TOKEN_AQUI"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    teclado = [
        [InlineKeyboardButton("Opção 1", callback_data="opcao1")],
        [InlineKeyboardButton("Opção 2", callback_data="opcao2")],
    ]
    markup = InlineKeyboardMarkup(teclado)
    await update.message.reply_text("Escolha uma opção:", reply_markup=markup)

async def botao_clicado(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()
    
    if query.data == "opcao1":
        await query.edit_message_text("Você escolheu a Opção 1!")
    elif query.data == "opcao2":
        await query.edit_message_text("Você escolheu a Opção 2!")

def main():
    app = Application.builder().token(TOKEN).build()
    
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CallbackQueryHandler(botao_clicado))
    
    app.run_polling()

if __name__ == "__main__":
    main()

Cada botão tem um callback_data que identifica qual foi clicado. O CallbackQueryHandler captura esses cliques e executa a função correspondente.

Tratando Erros no Bot

Erros acontecem. Conexões falham, usuários enviam dados inesperados, servidores ficam indisponíveis. Um bot bem programado precisa lidar com essas situações sem travar.

O conceito de try except em Python é fundamental aqui. Veja como implementar um tratador de erros global:

Python
import logging
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

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

TOKEN = "SEU_TOKEN_AQUI"

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Bot funcionando!")

async def erro(update: Update, context: ContextTypes.DEFAULT_TYPE):
    logging.error(f"Erro: {context.error}")

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(CommandHandler("start", start))
    app.add_error_handler(erro)
    app.run_polling()

if __name__ == "__main__":
    main()

O módulo logging registra informações úteis sobre o funcionamento do bot. Quando ocorre um erro, ele é salvo com data e hora, facilitando a identificação de problemas.

Ideias de Projetos com Bots de Telegram

Agora que você conhece os fundamentos, aqui estão algumas ideias para expandir seus conhecimentos:

  • Bot de lembretes: agenda tarefas e envia notificações
  • Bot de cotações: consulta preços de moedas ou ações
  • Bot de clima: mostra a previsão do tempo
  • Bot de tradução: traduz textos entre idiomas
  • Bot de quiz: cria jogos de perguntas e respostas

Para projetos mais complexos, você pode integrar o bot com a biblioteca Requests para consumir APIs externas. Também é possível usar Pandas para análise de dados ou BeautifulSoup para web scraping.

Boas Práticas para Desenvolvimento de Bots

Seguir boas práticas garante que seu bot funcione de forma estável e seja fácil de manter. Aqui estão recomendações importantes:

Nunca coloque o token diretamente no código. Use variáveis de ambiente para armazenar informações sensíveis. Isso evita vazamentos acidentais quando você compartilha o código.

Mantenha as mensagens claras e objetivas. Usuários não gostam de textos longos. Divida informações complexas em múltiplas mensagens ou use formatação para destacar pontos importantes.

Adicione comentários no código explicando o que cada parte faz. Isso ajuda você mesmo quando precisar fazer alterações no futuro.

Teste o bot com diferentes cenários antes de disponibilizar para outras pessoas. Simule erros, envie dados inválidos e verifique se o bot responde adequadamente em todas as situações.

Perguntas Frequentes (FAQ)

1. É gratuito criar um bot para Telegram?

Sim, criar e usar a API do Telegram é totalmente gratuito. Você só terá custos se precisar de servidor para hospedagem.

2. Preciso saber programar para criar um bot?

Sim, é necessário conhecimento básico de Python. Recomendo estudar os fundamentos de Python antes de começar.

3. O que é o BotFather?

BotFather é o bot oficial do Telegram usado para criar e gerenciar outros bots. Ele fornece o token de acesso necessário.

4. Posso criar um bot sem usar bibliotecas?

Sim, mas não é recomendado. Bibliotecas como python-telegram-bot simplificam muito o desenvolvimento e tratamento de erros.

5. Como faço para o bot ficar online 24 horas?

Você precisa hospedar o código em um servidor. Opções populares incluem Heroku, Railway, PythonAnywhere ou um VPS próprio.

6. Meu token vazou. O que fazer?

Use o comando /revoke no BotFather imediatamente. Ele gera um novo token e invalida o antigo.

7. O bot pode enviar imagens e arquivos?

Sim, a biblioteca suporta envio de fotos, vídeos, documentos, áudios e outros tipos de mídia.

8. Quantos usuários meu bot pode atender?

Não há limite definido pelo Telegram. A capacidade depende do servidor onde o bot está hospedado.

9. Como adiciono o bot em um grupo?

Basta pesquisar o nome do bot e adicioná-lo como membro. Configure as permissões de admin se necessário.

10. O bot funciona em computador e celular?

Sim, o bot funciona em qualquer dispositivo onde o Telegram esteja instalado, incluindo versão web.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Ilustração de automação usando Python
    FundamentosProjetos
    Foto do Leandro Hirt

    Python para Automação: 20 Scripts Prontos para Usar

    Descubra 20 scripts prontos de Python para automação que vão transformar seu dia a dia. Organize arquivos, envie e-mails, extraia

    Ler mais

    Tempo de leitura: 24 minutos
    07/12/2025
    Python e ícone de e-mail sobre teclado de notebook
    Projetos
    Foto do Leandro Hirt

    Como automatizar emails com Python

    Automatizar e-mails significa enviar mensagens sem fazer tudo manualmente. Com Python você pode agendar relatórios, avisos e mensagens de boas-vindas.

    Ler mais

    Tempo de leitura: 5 minutos
    03/12/2025
    jogo da velha
    Projetos
    Foto do Leandro Hirt

    Como Criar um Jogo da Velha no Python (Passo a Passo)

    O jogo da velha é um dos projetos mais clássicos para quem está aprendendo Python. Ele é simples, divertido e

    Ler mais

    Tempo de leitura: 9 minutos
    16/10/2025
    Foto de uma pessoa usando uma calculadora
    ProjetosFundamentos
    Foto do Leandro Hirt

    Como Criar uma Calculadora em Python Passo a Passo

    Aprender a programar em Python pode parecer difícil no começo, mas criar algo útil logo nas primeiras aulas torna o

    Ler mais

    Tempo de leitura: 7 minutos
    07/10/2025
    Chatbot simples em Python
    Projetos
    Foto do Leandro Hirt

    Construindo um Chatbot Simples com Python

    Criar um chatbot em Python é uma das formas mais práticas de aprender programação aplicada. Um chatbot é um programa

    Ler mais

    Tempo de leitura: 10 minutos
    28/09/2025
    Programador pensnado em frente à vários monitores com código na tela
    ProjetosFundamentos
    Foto do Leandro Hirt

    15 Exercícios Python para Iniciantes com Soluções Completas

    Aprender a programar é como aprender um novo idioma. Você precisa praticar todos os dias para melhorar. Python é uma

    Ler mais

    Tempo de leitura: 9 minutos
    14/08/2025

    Minicurso de Python

    Insira seu e-mail e para receber acesso às aulas agora mesmo