Bot en Python con Telegram API: Guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Cómo crear un bot en Python con telegram-bot-api? Guía completa

Introducción a los bots de Telegram

En el mundo actual, los mensajeros se han vuelto una parte esencial de la vida, y los bots son una herramienta práctica para automatizar tareas, interactuar con usuarios e incluso gestionar negocios. Si quieres crear tu propio bot para Telegram de forma rápida y sencilla, el lenguaje Python y la librería python-telegram-bot son la opción ideal.

Paso 1. Obtén tu token de acceso con BotFather

Antes de escribir código, debes registrar tu bot en Telegram. Para ello:

  1. Abre Telegram y busca al usuario @BotFather.
  2. Ejecuta el comando /start y luego /newbot.
  3. Indica el nombre y un nombre de usuario único para tu bot (por ejemplo, MiPrimerBotPython).
  4. Después del registro, BotFather te proporcionará un token API. Cópialo, lo necesitarás en el código.

Paso 2. Instalación de las librerías necesarias

Para interactuar con la API de Telegram usaremos la librería python-telegram-bot. Instálala con pip:

pip install python-telegram-bot --upgrade

Paso 3. Esqueleto básico del bot

Ahora crearemos un bot simple que responda al comando /start:

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("¡Hola! Soy tu primer bot en Python.")

if __name__ == '__main__':
    app = ApplicationBuilder().token("TU_TOKEN_AQUI").build()
    app.add_handler(CommandHandler("start", start))
    app.run_polling()

Explicación del código:

  • ApplicationBuilder y CommandHandler son herramientas básicas para manejar comandos.
  • La función start reacciona al comando /start y envía un mensaje de texto al usuario.
  • El método run_polling() inicia el bot y comienza a verificar nuevos mensajes.

Paso 4. Manejo de mensajes del usuario

Añadimos el manejo de mensajes de texto normales:

from telegram.ext import MessageHandler, filters

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
    received_text = update.message.text
    await update.message.reply_text(f"Escribiste: {received_text}")

if __name__ == '__main__':
    app = ApplicationBuilder().token("TU_TOKEN_AQUI").build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
    app.run_polling()

Ahora el bot responderá a cualquier mensaje de texto, repitiendo lo que escribas.

Paso 5. Agregar botones y menú interactivo

Los bots son mucho más útiles si incluyen botones:

from telegram import InlineKeyboardButton, InlineKeyboardMarkup

async def menu(update: Update, context: ContextTypes.DEFAULT_TYPE):
    keyboard = [
        [InlineKeyboardButton("Botón 1", callback_data='button1')],
        [InlineKeyboardButton("Botón 2", callback_data='button2')]
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text('Selecciona una opción:', reply_markup=reply_markup)

async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.callback_query
    await query.answer()
    await query.edit_message_text(text=f"Presionaste: {query.data}")

if __name__ == '__main__':
    from telegram.ext import CallbackQueryHandler
    app = ApplicationBuilder().token("TU_TOKEN_AQUI").build()
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CommandHandler("menu", menu))
    app.add_handler(CallbackQueryHandler(button_handler))
    app.add_handler                

Blogs

Book Recommendations