(https://telegram.org/file/811140614/2/flKQKZ7xUOE.27938.gif/5574a04570218c9e11)
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 BOTA 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.
pyTelegramBotAPIimport 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!
(https://i.imgur.com/mOakd8B.png)
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.
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:
(https://i.imgur.com/BvGxszU.png)
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-botDe manera similar a la anterior libreria configuramos el bot.
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:
(https://i.imgur.com/VdjIdXI.png)
Ejemplo de loggeo:
(https://i.imgur.com/jpEkstd.png)
¿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 :)
(https://i.imgur.com/XRyIGyv.png)
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?