Desarrollando BOTs para Telegram - Parte 2

Iniciado por blackdrake, Abril 01, 2018, 07:09:48 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 01, 2018, 07:09:48 AM Ultima modificación: Abril 01, 2018, 07:12:09 AM por blackdrake

Buenas!

Bienvenidos a la segunda parte de desarrollos de BOTs para Telegram en Python, si no habéis leído la parte uno os lo dejo aquí, pues es obligatoria: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Dicho esto, comezamos!

Es importante mencionar que yo he escogido Python, pero podéis elegir cualquier lenguaje de programación, hay librerías prácticamente en cualquier lenguaje y si no, siempre podéis atacar contra la propia API de telegram, aunque sea más tedioso.

1) Antes de nada, debemos elegir la libreria que vamos a utilizar, yo he utilizado estas dos, y ambas tienen sus pros y sus contras, así que os dejo que trasteéis con ellas y elijáis la que prefiráis (luego veremos ejemplos en cada una de ellas).

En mi caso son pyTelegramBotAPI (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login) y python-telegram-bot (You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login)

Para su instalación sobra con seguir el readme correspondiente, por lo general sobra con hacer un pip install o un git clone y su correspondiente python setup.


Interactuando con el BOT

A continuación os dejo dos fragmentos de código con los que podréis interactuar con vuestro BOT en Telegram para cada una de las librerías mencionadas anteriormente.

pyTelegramBotAPI
Código: python
import telebot
from telebot import types

bot = telebot.TeleBot("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") #Introducir el token que nos devolvió BOTFather

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, "Hello World Underc0de!")

bot.polling()


El siguiente código hace que el bot permanezca a la espera y si recibe el comando /start o el comando /help entrará en la función send_welcome respondiendo a nuestro mensaje (reply_to message) Hello World Underc0de!


Ahora que ya podemos interactuar con nuestro bot, vamos a establecer un nivel de loggeo, para monitorizar sus actividades.

Para ello simplemente debemos añadir las siguientes líneas.

Código: python
import telebot
from telebot import types
import logging #Importamos loggin

#Establecemos el logeo
logging.basicConfig(filename='log.log',filemode='a',format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO) #Seteado nivel a Informativo, hay varios niveles
logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG) # Debug Mensajes en Consola


bot = telebot.TeleBot("XXXXXXXXXXXXXXXXXXXXXX")

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
bot.reply_to(message, "Hello World Underc0de!")

bot.polling()


Con esto, cada vez que el bot recibe un mensaje, lo logueará tanto en el fichero como por consola:


Como se puede ver en la imagen anterior, nos devuelve campos muy interesantes, tales como la persona que ha escrito al bot, el comando enviado, y la respuesta enviada por el bot.

python-telegram-bot
De manera similar a la anterior libreria configuramos el bot.

Código: python

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import logging
import telegram

#Establecemos el logeo
logging.basicConfig(filename='log.log',filemode='a',format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO)
logger = logging.getLogger(__name__)

#Funcion start
def start(bot, update):
    update.message.reply_text('Hi! Underc0de')
    logger.info("Msg de %s - %s",bot,update) #Loggeamos la informacion


#Funcion main
def main():
    updater = Updater("XXXXXXXXXXXXXXXXXXXXXXXX") #NUESTRO TOKEN

    dp = updater.dispatcher

    #Comandos contemplados
    dp.add_handler(CommandHandler("start", start))

    #Si no tenemos el comando contemplado, lo devolvemos por pantalla
    dp.add_handler(MessageHandler(Filters.text, echo))

    #Loggeamos errores
    dp.add_error_handler(error)

    #Inciamos el bot
    updater.start_polling()

    #Ejecuta el bot hasta que presionemos Ctrl + C o el proceso reciba SIGINT,  SIGTERM o SIGABRT
    updater.idle()


if __name__ == '__main__':
    main()


Como se puede observar, el bot es parecido y la forma de funcionar es la misma.

Ejemplo de funcionamiento:

Ejemplo de loggeo:

¿Y lo bueno de todo esto?

Es que realmente todo corre bajo python, por lo que podemos hacer todo lo que queramos y simplemente que el bot nos devuelva el resultado de la operación vía telegram. Un ejemplo es el siguiente, consulta del buscador del blog a través del bot :)


Un saludo y nos vemos en la próxima :D



Hola, blackdrake. Gracias por los tutoriales, están geniales.

Una pregunta, si quisiera hacer un bot tipo "Simsimi" para Telegram, qué librería o funciones debo acudir?