Crear un bot de Telegram usando Python

En este artículo vamos a ver cómo crear un bot de Telegram usando Python.

En los últimos tiempos, Telegram se ha convertido en una de las plataformas de mensajería e intercambio de contenido más utilizadas, no tiene límite para compartir archivos como Whatsapp y viene con algunos bots preinstalados que se pueden usar en cualquier canal (grupos en el caso de WhatsApp) para controlar el comportamiento o filtrar los mensajes de spam enviados por los usuarios.

Requisitos

  • Una cuenta de Telegram: si no tiene instalada la aplicación Telegram, simplemente descárguela de Play Store. Después de descargar, cree una cuenta usando su número de teléfono móvil como WhatsApp.
  • . Módulo python-telegram-bot: aquí necesitaremos un módulo llamado python-telegram-bot . Esta biblioteca proporciona una interfaz Python pura para la API de Telegram Bot. Es compatible con las versiones de Python 3.6.8+. Además de la implementación de API pura, esta biblioteca presenta una serie de clases de alto nivel para que el desarrollo de bots sea fácil y directo. Estas clases están contenidas en el submódulo «telegram.ext». Para obtener más información, puede consultar su repositorio oficial de GitHub.

Instalación del módulo

Podemos instalar este módulo a través de pip y conda con el siguiente comando.

# installing via pip
pip install python-telegram-bot

# installing via conda
conda install -c conda-forge python-telegram-bot

Pasos para crear tu primer bot

Paso 1: después de abrir una cuenta en Telegram, en la barra de búsqueda en la parte superior, busque «BotFather»

Paso 2: Haga clic en ‘BotFather’ (primer resultado) y escriba /newbot

Paso 3: Asigne un nombre único a su bot. Después de nombrarlo, Botfather le pedirá su nombre de usuario. Luego, también proporcione un nombre único, PERO recuerde que el nombre de usuario de su bot debe terminar con el bot, como my_bot, hellobot, etc.

Paso 4: después de dar un nombre único y si se acepta, recibirá un mensaje como este:

Aquí el valor del token será diferente para usted, usaremos este token en nuestro código python para hacer cambios en nuestro bot y hacerlo como queremos, y agregarle algunos comandos.

Implementar paso a paso

Paso 1: Importación de las bibliotecas necesarias

Python3

from telegram.ext.updater import Updater
from telegram.update import Update
from telegram.ext.callbackcontext import CallbackContext
from telegram.ext.commandhandler import CommandHandler
from telegram.ext.messagehandler import MessageHandler
from telegram.ext.filters import Filters

Breve uso de las funciones que estamos importando:

  • Actualizador: Contendrá la clave API que obtuvimos de BotFather para especificar en qué bot estamos agregando funcionalidades para usar nuestro código python.
  • Actualización: esto se invocará cada vez que un bot reciba una actualización, es decir . mensaje o comando y enviará al usuario un mensaje.
  • CallbackContext: no usaremos su funcionalidad directamente en nuestro código, pero cuando agreguemos el despachador, es necesario (y funcionará internamente)
  • CommandHandler: esta clase de controlador se usa para manejar cualquier comando enviado por el usuario al bot, un comando siempre comienza con «/», es decir, «/ iniciar», «/ ayuda», etc.
  • MessageHandler: esta clase de controlador se usa para manejar cualquier mensaje normal enviado por el usuario al bot,
  • Filtros: esto filtrará texto normal, comandos, imágenes, etc. de un mensaje enviado.

Paso 2: Definir funciones para la operación

Función de inicio: mostrará la primera conversación, puede nombrarla de otra manera, pero el mensaje que contiene se enviará al usuario cada vez que presione ‘iniciar’ al principio.

Python3

updater = Updater("your_own_API_Token got from BotFather",
                  use_context=True)
  
  
def start(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Enter the text you want to show to the user whenever they start the bot")

Básicamente, en el mensaje de inicio, debe agregar algo como «Hola, bienvenido al bot», etc.

Función de ayuda: es básicamente en esta función que debe agregar cualquier tipo de ayuda que el usuario pueda necesitar, es decir, todos los comandos que entiende su bot, la información relacionada con el bot, etc.)

Python3

def help(update: Update, context: CallbackContext):
    update.message.reply_text("Your Message")

Agregando algunas funcionalidades más al Bot.

Python3

def gmail_url(update: Update, context: CallbackContext):
    update.message.reply_text("gmail link here")
  
  
def youtube_url(update: Update, context: CallbackContext):
    update.message.reply_text("youtube link")
  
  
def linkedIn_url(update: Update, context: CallbackContext):
    update.message.reply_text("Your linkedin profile url")
  
  
def geeks_url(update: Update, context: CallbackContext):
    update.message.reply_text("GeeksforGeeks url here")
  
  
def unknown_text(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Sorry I can't recognize you , you said '%s'" % update.message.text)
  
  
def unknown(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Sorry '%s' is not a valid command" % update.message.text)

Aquí hemos agregado 4 funciones, una para abrir Gmail, una para youtube, una para LinkedIn y la última para GeeksforGeeks. Estas no son funciones OBLIGATORIAS , puede agregar cualquier tipo de función y su texto de respuesta como desee, son solo para demostración. Aquí, la función unknown_text enviará el mensaje escrito en su interior cada vez que reciba algunos mensajes desconocidos y la función unknown filtrará todos los comandos desconocidos enviados por el usuario y responderá al mensaje escrito en su interior.

Paso 3: agregar los controladores para manejar nuestros mensajes y comandos

Python3

updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CommandHandler('youtube', youtube_url))
updater.dispatcher.add_handler(CommandHandler('help', help))
updater.dispatcher.add_handler(CommandHandler('linkedin', linkedIn_url))
updater.dispatcher.add_handler(CommandHandler('gmail', gmail_url))
updater.dispatcher.add_handler(CommandHandler('geeks', geeks_url))
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown))
updater.dispatcher.add_handler(MessageHandler(
    # Filters out unknown commands
    Filters.command, unknown))
  
# Filters out unknown messages.
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown_text))

Aquí, cada línea sugiere que cada vez que un usuario escribe un comando, es decir, el primer parámetro de CommandHandler en respuesta, el usuario recibe el mensaje escrito dentro de la función mencionada en el siguiente parámetro.

Paso 4: ejecutar el bot

Python3

updater.start_polling()

Aquí, cada vez que comencemos a sondear, el bot estará activo y buscará cualquier mensaje nuevo enviado por cualquiera de los usuarios y, si coincide con el comando especificado allí, responderá en consecuencia.

A continuación se muestra la implementación completa:

Python3

from telegram.ext.updater import Updater
from telegram.update import Update
from telegram.ext.callbackcontext import CallbackContext
from telegram.ext.commandhandler import CommandHandler
from telegram.ext.messagehandler import MessageHandler
from telegram.ext.filters import Filters
  
updater = Updater("your_own_API_Token got from BotFather",
                  use_context=True)
  
  
def start(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Hello sir, Welcome to the Bot.Please write\
        /help to see the commands available.")
  
def help(update: Update, context: CallbackContext):
    update.message.reply_text("""Available Commands :-
    /youtube - To get the youtube URL
    /linkedin - To get the LinkedIn profile URL
    /gmail - To get gmail URL
    /geeks - To get the GeeksforGeeks URL""")
  
  
def gmail_url(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Your gmail link here (I am not\
        giving mine one for security reasons)")
  
  
def youtube_url(update: Update, context: CallbackContext):
    update.message.reply_text("Youtube Link =>\
    https://www.youtube.com/")
  
  
def linkedIn_url(update: Update, context: CallbackContext):
    update.message.reply_text(
        "LinkedIn URL => \
        https://www.linkedin.com/in/dwaipayan-bandyopadhyay-007a/")
  
  
def geeks_url(update: Update, context: CallbackContext):
    update.message.reply_text(
        "GeeksforGeeks URL => https://www.geeksforgeeks.org/")
  
  
def unknown(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Sorry '%s' is not a valid command" % update.message.text)
  
  
def unknown_text(update: Update, context: CallbackContext):
    update.message.reply_text(
        "Sorry I can't recognize you , you said '%s'" % update.message.text)
  
  
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CommandHandler('youtube', youtube_url))
updater.dispatcher.add_handler(CommandHandler('help', help))
updater.dispatcher.add_handler(CommandHandler('linkedin', linkedIn_url))
updater.dispatcher.add_handler(CommandHandler('gmail', gmail_url))
updater.dispatcher.add_handler(CommandHandler('geeks', geeks_url))
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown))
updater.dispatcher.add_handler(MessageHandler(
    Filters.command, unknown))  # Filters out unknown commands
  
# Filters out unknown messages.
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown_text))
  
updater.start_polling()

Producción:

Publicación traducida automáticamente

Artículo escrito por dwaipayan_bandyopadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *