Añadir comandos a un bot de Telegram (Python)

Tiempo de lectura: 3 minutos

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.

2 comentarios en «Añadir comandos a un bot de Telegram (Python)»

Deja un comentario