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

01/04/2018 | Autor: Eduardo Enriquez

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


Tags