Tutorial Bots Telegram Python: Crear un Bot Telegram Paso a Paso utilizando la Telegram API
Crear bots en Telegram es una habilidad cada vez más demandada que te permitirá automatizar tareas, interactuar con usuarios y desarrollar aplicaciones útiles dentro de esta popular plataforma de mensajería. En este tutorial detallado y didáctico, aprenderás cómo construir bots con Python desde cero, usando la Telegram API de manera eficiente.
Introducción a los Bots en Telegram
Un bot en Telegram es un programa automatizado que puede interactuar con usuarios a través de mensajes, comandos y otras funcionalidades que ofrece la plataforma. Gracias a la Telegram API, los desarrolladores pueden crear bots con múltiples usos, desde respuestas automáticas hasta complejos sistemas de gestión.
Requisitos Previos
Antes de comenzar, asegúrate de tener:
- Conocimientos básicos de Python (variables, funciones y programación orientada a objetos básicas).
- Una cuenta activa de Telegram.
- Acceso a la consola o terminal para instalar paquetes y ejecutar scripts.
1. Configuración del Entorno de Desarrollo
1.1 Instalación de Python
Verifica que Python esté instalado en tu sistema. Puedes descargarlo desde python.org.
En la terminal, escribe:
1 2 3 4 |
python --version # o python3 --version |
Si no está instalado, sigue las instrucciones del sitio oficial para hacerlo.
1.2 Crear un Entorno Virtual (opcional pero recomendado)
Un entorno virtual aísla las dependencias de tus proyectos.
1 2 |
python -m venv telegram-bot-env |
Activa el entorno:
- En Windows:
1 2 |
telegram-bot-env\Scripts\activate |
- En Linux/macOS:
1 2 |
source telegram-bot-env/bin/activate |
1.3 Instalación de la Librería python-telegram-bot
Esta librería simplifica la interacción con la Telegram API.
1 2 |
pip install python-telegram-bot --upgrade |
2. Crear un Bot en Telegram y Obtener el Token
2.1 Conversación con BotFather
BotFather es el bot oficial para crear nuevos bots en Telegram.
- Busca
@BotFather
en Telegram. - Escribe
/newbot
y sigue las instrucciones. - Elige un nombre para tu bot (visible para usuarios).
- Elige un
username
que termine en “bot”. - Obtendrás un token de API que será como una contraseña para controlar tu bot.
Guarda este token con seguridad.
2.2 Probar el Bot
Busca tu nuevo bot por el username en Telegram y envíale un mensaje para probarlo.
3. Primer Código para tu Bot Telegram
Crea un archivo bot.py
y añade el siguiente código básico:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes TOKEN = 'TU_TOKEN_AQUI' # Definimos una función que responde a /start async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('¡Hola! Soy tu bot de Telegram creado con Python.') if __name__ == '__main__': app = ApplicationBuilder().token(TOKEN).build() app.add_handler(CommandHandler('start', start)) print('Bot iniciado...') app.run_polling() |
Explicación:
ApplicationBuilder()
crea la aplicación del bot.CommandHandler
enlaza comandos (como/start
) con funciones específicas.run_polling()
mantiene el bot escuchando mensajes.
Ejecuta el script:
1 2 |
python bot.py |
Luego escribe /start
en tu chat con el bot para ver la respuesta.
4. Manejo de Mensajes con Texto y Respuestas Automáticas
El bot puede escuchar mensajes de texto sencillos y responder dinámicamente.
Modificamos bot.py
para agregar un manejador de mensajes:
1 2 3 4 5 6 7 8 9 10 |
from telegram.ext import MessageHandler, filters async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE): received_text = update.message.text response = f'Dijiste: {received_text}' await update.message.reply_text(response) # Dentro del bloque principal app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo)) |
Explicación:
MessageHandler
capta mensajes no comandos.- Usamos un filtro para solo texto que no sea comando.
- Responde repitiendo el texto enviado.
5. Agregar Más Comandos Personalizados
Puedes añadir más funciones para responder a diferentes comandos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE): help_text = ( 'Comandos disponibles:\n' '/start - Iniciar el bot\n' '/help - Mostrar ayuda\n' '/about - Información sobre el bot' ) await update.message.reply_text(help_text) async def about(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('Soy un bot creado para ayudarte a aprender sobre bots en Telegram con Python.') # Añadir handlers app.add_handler(CommandHandler('help', help_command)) app.add_handler(CommandHandler('about', about)) |
6. Mejoras: Manejo de Errores y Buenas Prácticas
6.1 Manejo básico de errores
Puedes agregar un handler para reportar errores:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import logging from telegram.ext import Application logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) logger = logging.getLogger(__name__) async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE) -> None: logger.error(msg='Exception while handling an update:', exc_info=context.error) # Añadir error handler app.add_error_handler(error_handler) |
6.2 Seguridad y Organización
- No expongas tu token en repositorios públicos.
- Usa variables de entorno para guardar credenciales.
- Organiza el código en funciones y módulos según crezca el proyecto.
7. Ejemplo Completo Integrando Todos los Conceptos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import logging from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters TOKEN = 'TU_TOKEN_AQUI' logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) logger = logging.getLogger(__name__) async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('¡Hola! Soy tu bot de Telegram creado con Python.') async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE): help_text = ( 'Comandos disponibles:\n' '/start - Iniciar el bot\n' '/help - Mostrar ayuda\n' '/about - Información sobre el bot' ) await update.message.reply_text(help_text) async def about(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text('Soy un bot para aprender a programar bots en Telegram con Python.') async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE): received_text = update.message.text response = f'Dijiste: {received_text}' await update.message.reply_text(response) async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE) -> None: logger.error(msg='Exception while handling an update:', exc_info=context.error) if __name__ == '__main__': app = ApplicationBuilder().token(TOKEN).build() app.add_handler(CommandHandler('start', start)) app.add_handler(CommandHandler('help', help_command)) app.add_handler(CommandHandler('about', about)) app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo)) app.add_error_handler(error_handler) print('Bot iniciado...') app.run_polling() |
Conclusión
¡Felicidades! Has creado un bot de Telegram usando Python y la Telegram API con funcionalidad básica para manejar comandos, mensajes y respuestas automáticas. Esta base te brinda un punto de partida sólido para desarrollar bots eficientes y más complejos.
Siguientes pasos recomendados:
- Implementar almacenamiento con bases de datos para guardar información del usuario.
- Añadir procesamiento avanzado de mensajes con NLP.
- Integrar APIs externas para ampliar funcionalidades.
Si te ha gustado este tutorial, te invito a practicar creando tus propios comandos y mejorando tu bot. ¡La programación de bots en Telegram te abre un mundo de posibilidades!
Buenas Prácticas para Programación con Telegram API y Bots con Python
- Mantén tu token seguro, no lo compartas.
- Utiliza entornos virtuales para aislar dependencias.
- Comenta y estructura tu código claramente.
- Maneja errores para evitar que el bot se caiga.
- Realiza pruebas con usuarios reales.
- Consulta la documentación oficial de Telegram Bot API y de
python-telegram-bot
.
Si quieres estar al día, suscríbete a blogs y canales especializados en desarrollo de bots para Telegram.
¡Manos a la obra y a programar tu bot con éxito!