Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Desarrollando BOTs para Telegram - Parte 2

  • 1 Respuestas
  • 3768 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1923
  • Actividad:
    3.33%
  • Reputación 15
    • Ver Perfil
« en: Abril 01, 2018, 07:09:48 am »

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: https://underc0de.org/foro/python/desarrollando-bots-para-telegram-parte-1/

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 (https://github.com/eternnoir/pyTelegramBotAPI) y python-telegram-bot (https://github.com/python-telegram-bot/python-telegram-bot)

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
  1. import telebot
  2. from telebot import types
  3.  
  4. bot = telebot.TeleBot("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") #Introducir el token que nos devolvió BOTFather
  5.  
  6. @bot.message_handler(commands=['start', 'help'])
  7. def send_welcome(message):
  8.         bot.reply_to(message, "Hello World Underc0de!")
  9.  
  10. bot.polling()
  11.  

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
  1. import telebot
  2. from telebot import types
  3. import logging #Importamos loggin
  4.  
  5. #Establecemos el logeo
  6. 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
  7. logger = telebot.logger
  8. telebot.logger.setLevel(logging.DEBUG) # Debug Mensajes en Consola
  9.  
  10.  
  11. bot = telebot.TeleBot("XXXXXXXXXXXXXXXXXXXXXX")
  12.  
  13. @bot.message_handler(commands=['start', 'help'])
  14. def send_welcome(message):
  15.         bot.reply_to(message, "Hello World Underc0de!")
  16.  
  17. 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
  1. from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
  2. import logging
  3. import telegram
  4.  
  5. #Establecemos el logeo
  6. logging.basicConfig(filename='log.log',filemode='a',format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO)
  7. logger = logging.getLogger(__name__)
  8.  
  9. #Funcion start
  10. def start(bot, update):
  11.     update.message.reply_text('Hi! Underc0de')
  12.     logger.info("Msg de %s - %s",bot,update) #Loggeamos la informacion
  13.  
  14.  
  15. #Funcion main
  16. def main():
  17.     updater = Updater("XXXXXXXXXXXXXXXXXXXXXXXX") #NUESTRO TOKEN
  18.  
  19.     dp = updater.dispatcher
  20.  
  21.     #Comandos contemplados
  22.     dp.add_handler(CommandHandler("start", start))
  23.  
  24.     #Si no tenemos el comando contemplado, lo devolvemos por pantalla
  25.     dp.add_handler(MessageHandler(Filters.text, echo))
  26.  
  27.     #Loggeamos errores
  28.     dp.add_error_handler(error)
  29.  
  30.     #Inciamos el bot
  31.     updater.start_polling()
  32.  
  33.     #Ejecuta el bot hasta que presionemos Ctrl + C o el proceso reciba SIGINT,  SIGTERM o SIGABRT
  34.     updater.idle()
  35.  
  36.  
  37. if __name__ == '__main__':
  38.     main()
  39.  

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
« Última modificación: Abril 01, 2018, 07:12:09 am por blackdrake »



Desconectado Drezan

  • *
  • Underc0der
  • Mensajes: 12
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Junio 07, 2018, 05:28:02 pm »
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?

 

¿Te gustó el post? COMPARTILO!



DoHC2: aprovechado para comando y control a través de DNS a través de HTTPS

Iniciado por CyberSec777

Respuestas: 0
Vistas: 2240
Último mensaje Febrero 24, 2019, 05:39:27 pm
por CyberSec777
Como crear un ejecutable [.exe] de Python para poderlo ejecutar en Windows

Iniciado por [Z]tuX

Respuestas: 2
Vistas: 7057
Último mensaje Mayo 28, 2011, 12:18:29 pm
por Gh0st.C
[Python] Mini clase para enviar datos POST - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 2770
Último mensaje Diciembre 08, 2011, 05:24:26 am
por JaAViEr
[VIDEOTUTORIAL] UAlicante - Curso Python para científicos e ingenieros

Iniciado por graphixx

Respuestas: 1
Vistas: 2901
Último mensaje Junio 25, 2016, 06:41:33 am
por OLM
Rifap - Un script para reunir la informacion de un telefono en mas de 232 paises

Iniciado por DtxdF

Respuestas: 4
Vistas: 4704
Último mensaje Julio 05, 2018, 02:34:56 am
por DtxdF