¿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:
- Abre Telegram y busca al usuario @BotFather.
- Ejecuta el comando /start y luego /newbot.
- Indica el nombre y un nombre de usuario único para tu bot (por ejemplo, MiPrimerBotPython).
- 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:
ApplicationBuilderyCommandHandlerson herramientas básicas para manejar comandos.- La función
startreacciona 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