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: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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 (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta) y python-telegram-bot (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta)

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?