Binary Coffee

Cómo hacer un Bot de Telegram desde cero con Python

bot telegram
Telegram se ha convertido sin dudas en uno de los l√≠deres de las aplicaciones de mensajer√≠a m√≥vil y una de sus m√°s curiosas caracter√≠sticas son los bots. Un bot telegram no es m√°s que un programa comunic√°ndose con los usuarios a trav√©s de la API de Telegram. En este art√≠culo te ense√Īaremos como hacer un bot para Telegram desde cero con Python, asumiendo que posees conocimientos b√°sicos de programaci√≥n. Este bot se encargar√° de buscar noticias en internet en consecuencia de lo que el usuario desee, haciendo uso de los servicios que brinda [NewsApi](newsapi.org). ## Paso 1: Crear Bot en Telegram y obtener Token ![](https://dev.angemy.com/uploads/d0470951dc48400db8a15626dddf424d.jpg) Lo primero que necesitamos es ir a Telegram y buscar **@BotFather**. Este bot permite crear otros bots en Telegram, modificar sus datos y lo mas importante obtener el **Token** de acceso a la API que nos va a permitir crear toda la funcionalidad. Una vez iniciado podemos ver las opciones. * /newbot ‚Äď para crear un nuevo bot * /token ‚Äď para generar el token * /revoke ‚Äď revocar acceso al token * /setname ‚Äď cambiar el nombre del bot * /setdescription ‚Äď cambiar la descripci√≥n del bot * /setabouttext ‚Äď cambiar el texto ‚Äúabout me‚ÄĚ * /setuserpic ‚Äď cambiar la foto de perfil * /setcommands ‚Äď establece los comandos del bot * /deletebot ‚Äď eliminar un bot Seleccionamos `/newbot` y nos pedir√° el nombre y el usuario y luego nos dar√° el **Token**. Decir que este no se lo debes ense√Īar a nadie. Una vez obtenido el token podemos verificar que se ha creado exitosamente accediendo a https://api.telegram.org/bot**Token**/getme. Recuerda este link es solo para verificar, mantenlo seguro. ## Paso 2: Obtener API_Key de [NewsAPI](newsapi.org) ![](https://dev.angemy.com/uploads/1d3a666790c84dd19b1aa50436673010.png) NewsAPI es un servicio de noticias que integra m√°s de 30 000 medios de prensa de una gran variedad de idiomas, permite buscar noticias por t√≠tulo, fecha, medio, idioma, tema, etc. Es totalmente gratis para desarrolladores solo tenemos que ir a la p√°gina y dar en obtener `Get API key`. ## Paso 3: Crear base del bot Para este paso necesitamos tener python 3.7 instalado en nuestra PC, el cual se puede descargar desde su [p√°gina oficial](https://www.python.org/) o seguir nuestro tuto sobre [C√≥mo instalar Python](https://dev-ui.angemy.com/post/5e068d133e8db80013d1c268). Una vez lo tengamos instalado agregamos las siguientes dependencias. Python-Telegram-Bot es una interfaz para la API de bots de Telegram, lo que nos permitir√° consumir los servicios de una manera m√°s sencilla. * `pip install python-telegram-bot` NewsAPI-Python es una interfaz para consumir los servicios de NewsAPI desde python. * `pip install newsapi-python` Copiamos el siguiente c√≥digo a un archivo bot.py. ``` from telegram.ext import Updater, CommandHandler, MessageHandler, Filters from newsapi import NewsApiClient #Creamos un archivo env.py para guardar nuestras credenciales from env import NEWS_API_KEY, BOT_KEY #Creamos la intefaz con la API de Noticas. newsapi = NewsApiClient(api_key=NEWS_API_KEY) def start(update, context): # Configuramos el comando start para enviar un mensaje de bienvenida update.message.reply_text('Bienvenido, escribe algo para comenzar a buscar noticias.') def help(update, context): # Configuramos el comando help para enviar un mensaje con instrucciones update.message.reply_text('Hola escriba algunas palabras clave para empezar a buscar noticias en la web.') def echo(update, context): # Configuramos para enviar un mensaje con el texto que envi√≥ el usuario, aqu√≠ es donde va a ir toda la l√≥gica de nuestro bot update.message.reply_text(update.message.text) def main(): # Creamos el Updater y le pasamos el token de nuestro bot. Este se encargar√° de manejar las peticiones de los usuarios. updater = Updater(BOT_TOKEN, use_context=True) # Obtenemos el Dispatcher para crear los comandos dp = updater.dispatcher # Creamos el comando /start y definimos que se ejecute este mismo m√©todo dp.add_handler(CommandHandler("start", start)) # Creamos el comando /help y definimos que se ejecute el m√©todo help dp.add_handler(CommandHandler("help", help)) # De no ejecutarse ninguno de los anteriores asumimos que el usuario escribi√≥ algo y ejecutamos el m√©todo echo que nos va a permitir obtener los campos de las b√ļsquedas del usuario dp.add_handler(MessageHandler(Filters.text, echo)) updater.start_polling() updater.idle() if __name__ == '__main__': main() ``` Ahora abrimos la consola, ejecutamos `python3 bot.py` y vamos a Telegram y buscamos nuestro bot, al ejecutar alguna de las acciones que definimos anteriormente recibiremos una respuesta del mismo. ## Paso 4: Buscar las noticias Como hab√≠amos dicho anteriormente el m√©todo `echo` se encargar√≠a de buscar las noticias, pues ahora lo que toca es programarlo, puedes encontrar la documentaci√≥n y cientos de ejemplos en NewsAPI. ``` def echo(update, context): all_articles = newsapi.get_everything( #q va a ser el texto que queremos buscar, en este caso lo que introdujo el usuario q=update.message.text, #sources son los medios en los que queremos buscar, en la documentaci√≥n aparecen todos sources='bbc-news,the-verge,abc-news-au,bbc-sport,bloomberg,crypto-coins-news,engadget,espn,national-geographic', #definimos tambi√©n el lenguaje y ordenamos por relevancia language='en', sort_by='relevancy' ) # Puede darse el caso de que obtengamos cientos de resultados, y seria inc√≥modo para el usuario tener tantas noticias as√≠ que nos quedamos con las √ļltimas 3 y las mandamos for i in all_articles['articles'][:3]: update.message.reply_text("%s\n\n%s" % (i['source']['name'], i['url'])) # En caso de que no se encuentren resultados le avisamos al usuario if len(all_articles['articles']) == 0: update.message.reply_text('No se han encontrado noticias relacionadas. Intente simplificar lo que desea con palabras clave.') ``` Ahora volvemos a correr el bot en la consola y ya podemos buscar. El bot estar√° online siempre y cuando lo est√© tu PC por lo que te recomiendo que busques servicios como PythonAnyWhere y [Heroku](https://binary-coffee.dev/post/aprende-a-desplegar-un-bot-de-telegram-en-heroku) en los que pueden montarlo de forma gratuita para que siempre est√© online. Si no sabes programar no importa existen otras buenas opciones para crear tu bot, un ejemplo de ellas son **@ManyBot** y **@ChatFuel**. Puedes decargar el c√≥digo entero desde [GitHub](https://github.com/dcs-community/binary-news-coffee_bot) si√©ntete libre de hacer fork y experimentar, incluso puedes contribuir si as√≠ lo deseas. > Keep calm and drink a Binary Coffee!
Opiniones
noavatar
noavatar