| Author: Eduardo Enriquez

Hace tu primer bot de telegram con python y en muy poquitos pasos!

Vamos a ver los primeros pasos para crear un bot de telgram. Si no conocen telgram les recomiendo que lo instalen y dejen de usar whatsapp ya mismo!聽

1.聽Para arranca primer paso: conseguir un Access Token

Para generar un聽Access Token solo hace falta hablar con聽@BotFather聽a trav茅s de telegram. Hay que seguir unos pasos muy sencillos y que estan bien explicados aqu铆.聽

2. Segundo paso:聽codear un mini script para lanzar el bot

En este caso vamos usar una de las librerias de python que wrappean la api de telegram. B谩sicamente una libreria que se comunica con la api y nos expone c贸digo python para interactuar con la api sin usar requests. La libreria es聽python-telegram-bot聽porque creo que es la que est谩 m谩s madura actualmente.

Obviamente para usarla usamos pip:

$ pip install python-telegram-bot --upgrade

La documentaci贸n y los tutoriales est谩n muy buenos. En ellos me inspire para escribir este post:聽Your-first-bot

Creamos un archivo bot.py y le escribimos lo siguiente:

from telegram.ext import Updater
from telegram.ext import CommandHandler


def start(bot, update):
    bot.send_message(
        chat_id=update.message.chat_id,
        text="Hola! Soy un bot!"
    )

updater = Updater(token='TOKEN')
dispatcher = updater.dispatcher

start_handler = CommandHandler('start', start)

dispatcher.add_handler(start_handler)

updater.start_polling()

Ac谩 creamos una funcion start que estar谩 asociada al comando /start. Esa es la logica de python-telegram-bot, creamos funciones que se pueden asociar con un comando. Para asociar basta usar CommandHandler y pasarle el comando y la funci贸n. Una vez creado el handler se lo pasamos al dispatcher.

Para funcionar solo basta hacer:

python bot.py

3. Tercer paso: crear un comando que pueda recibir parametros:

La funci贸n start no recibe ning煤n parametro, pero podemos crear una funcion que reciba cosas. Por ejemplo, un comando que permita convertir a mayusculas una palabra cualquiera. Ej:聽聽/mayuscula palabra

def mayusculas(bot, update, args):
    texto_en_mayusculas = ' '.join(args).upper()
    bot.send_message(chat_id=update.message.chat_id, text=texto_en_mayusculas)

mayusculas_handler = CommandHandler('mayusculas', mayusculas, pass_args=True)

dispatcher.add_handler(mayusculas_handler)

4. MessageHandler:Parsear todos los mensajes que se escriben con el bot

Adem谩s de comandos el bot puede escuchar/leer todo lo que se escribe de manera privada o lo que se escribe p煤blicamente adentro de un grupo o sala en la que el bot est谩 agregado. Para esto se necesita crear un聽MessageHandler

from telegram.ext import MessageHandler, Filters

def loro(bot, update):
    bot.send_message(chat_id=update.message.chat_id, text=update.message.text)

loro_handler = MessageHandler(Filters.text, loro)

dispatcher.add_handler(loro_handler)

Este message handler va a repetir todo lo que se diga como un loro. Obviamente es algo in煤til pero es un ejemplo de como recibir en una funci贸n todo lo que los dem谩s usuarios escriben. Ac谩 solo le decimos que parsee texto pero se puede pasarle para que actu茅 distinto si son stickers, sonidos o emojis.

Para leer que mas cosas se pueden hacer: guias de codigo con ejemplos y mi @eduzen_bot

Related Posts