Siguiendo el post del día anterior Cómo hacer un bot para Telegram (Python) vamos a completar este script en Python para añadir la funcionalidad de comandos al bot.
Los comandos sirven para indicar al bot la función que queremos realizar.
Un comando se escribe en el chat de Telegram de la siguiente forma:
/comando
Entonces vamos a hacer que el bot haga algo cuando escribamos ese comando de ejemplo.
Para ello recuperamos el código del día anterior
# -*- coding: utf-8 -*- # Importamos telebot import telebot # Añadimos el token que nos ha dado botfather token_bot = 543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd # Inicializamos al bot registrandolo con el token bot = telebot.TeleBot(token_bot) # Creamos una función dónde vamos a recibir todos los mensajes del chat en el que esté incluido el bot # Pasamos mensajes (es una lista de mensajes) def recibir_mensajes(mensajes): # Recorremos la lista de mensajes: for mensaje in mensajes: # Ejemplo para imprimir el mensaje que llega print('El mensaje es ', mensaje.json['text']) # Obtiene id del chat para poder responder con el bot id_chat = mensaje.chat.id # Respondemos un texto usando el bot bot.send_message(id_chat, "Te respondo y soy un Bot") # Registramos la función dónde vamos a recibir los mensajes del chat bot.set_update_listener(recibir_mensajes) # Decimos que el bot no finalice bot.polling(none_stop=True)
Y vamos a añadir lo siguiente
#Añadimos la función para ejecutar el comando @bot.message_handler(commands=['comando']) def comando(mensaje): id_chat= mensaje.chat.id bot.send_message( id_chat, 'Has invocado el comando')
En el parámetro commands
, añadimos los comandos que van a ejecutar el método que hemos creado. Dentro de la función recuperamos el id_chat y utilizamos send_message
para responder con el bot.
Si juntamos el código, queda de la siguiente forma:
# -*- coding: utf-8 -*- # Importamos telebot import telebot # Añadimos el token que nos ha dado botfather token_bot = 543759345:AHsjdfUUdfsi2kjksaKKKdmmmsddd # Inicializamos al bot registrandolo con el token bot = telebot.TeleBot(token_bot) # Creamos una función dónde vamos a recibir todos los mensajes del chat en el que esté incluido el bot # Pasamos mensajes (es una lista de mensajes) def recibir_mensajes(mensajes): # Recorremos la lista de mensajes: for mensaje in mensajes: # Ejemplo para imprimir el mensaje que llega print('El mensaje es ', mensaje.json['text']) # Obtiene id del chat para poder responder con el bot id_chat = mensaje.chat.id # Respondemos un texto usando el bot bot.send_message(id_chat, "Te respondo y soy un Bot") # Registramos la función dónde vamos a recibir los mensajes del chat bot.set_update_listener(recibir_mensajes) #Añadimos la función para ejecutar el comando @bot.message_handler(commands=['comando']) def comando(mensaje): id_chat= mensaje.chat.id bot.send_message( id_chat, 'Has invocado el comando') # Decimos que el bot no finalice bot.polling(none_stop=True)
Ahora podemos registrar el comando usando @BotFather de Telegram y seleccionando nuestro bot.
Aquí seleccionamos Edit Bot
Y ahora seleccionamos Edit Commands para poder añadir los comandos
Una vez añadidos, ya nos aparecerá la ayuda del comando dentro del chat de Telegram dónde tengamos incluido al Bot.
Nota: los comandos se escriben con el formato:
comando – descripción
comando – descripción
En caso de que haya varios se añaden con un salto de línea.
Y hasta aquí el tutorial de hoy.
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
2 comentarios en «Añadir comandos a un bot de Telegram (Python)»