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:
pip install python-telegram-botA 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:
- Abra o Telegram e pesquise por @BotFather
- Inicie uma conversa clicando em “Start” ou “Iniciar”
- Digite o comando
/newbot - Escolha um nome de exibição para o bot (pode conter espaços)
- 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
/revokeno 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:
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:
python bot.pySe 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:
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:
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:
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:
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.







