Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Valery C. Briz
Valery C. Briz

Posted on • Originally published atplanetachatbot.com on

     

Desarrollando un Chatbot Básico en 10 minutos

Te interesan los ChatBots? No sabes por donde empezar?

A veces la mejor forma de empezar es intentandolo, algo simple y funcional que en el mismo desarrollo te vaya enseñando y a la vez dando ideas sobre lo que podrías conseguir despues.

Asi que aquí vamos!

Para este tutorial vamos a utilizar Telegram como plataforma para nuestro chatbot y Python como lenguaje de desarrollo para poder lograr nuestro objetivo rapido y sin tanto esfuerzo.

Ok primero necesitamos un Token para utilizar nuestro bot, para eso nos vamos a Telegram y buscamo al “BotFather”, le enviamos el comando /newbot

Entonces preguntará cuál es el nombre del Bot y cual es el ID (hay que tomar en cuenta que el ID/Username del bot no se puede repetir, por lo que hay que escoger un ID único, usualmente al final lleva la palabra Bot), en la última pregunta nos respondera con el Token y un Url para ir a la conversacion con nuestro bot.

El Token se mira algo asi como esto:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 , de ahora en adelante simplemente usaremos para referirnos a ello.

Ahora copia el Token y pegalo en algún lugar seguro, proximamente vamos a utilizarlo.

Si aún no tienes Python instalado puedes ir ahttps://www.python.org/ para descargarlo e instalarlo.

En el medio hay una gran cantidad de APIs utiles para Python y Telegram-Bots, si quieres saber un poco mas sobre ello puedes ir a:

https://github.com/python-telegram-bot/python-telegram-bot

En esta ocasión vamos a utilizar este API que es bastante completo y facil de usar:

https://github.com/datamachine/twx.botapi

Primero lo instalamos por medio de pip.

pip install twx.botapi
Enter fullscreen modeExit fullscreen mode

Ahora, Necesitamos un API que nos diga el clima en la ubicación que solicitaremos, para ello utilizaremos Open Weather Map:

https://github.com/csparpa/pyowm

pip install pyowm
Enter fullscreen modeExit fullscreen mode

Y para utilizarlo es necesario un API KEY que puedes obtener aquí:

http://openweathermap.org/appid

De ahora en adelante nos referiremos al api key como

Este API nos proporciona datos como nubosidad, viento, temperatura y algunos otros detalles acerca del clima en la ubicación que le enviemos.

Perfecto! estamos listos para desarrollarlo!

# -\*- coding: utf-8 -\*-#python2.7importsysfromtimeimportsleepfromtwx.botapiimportTelegramBot,ReplyKeyboardMarkup#Telegram Bot APIimporttracebackfrompyowmimportOWM#API del Clima"""Inicializamos nuestro Bot y el API del Clima"""TOKEN=<token>OWMKEY=<OWMKEY>bot=TelegramBot(TOKEN)bot.update_bot_info().wait()#Esperamos por un mensaje entranteprintbot.usernamelast_update_id=0defprocess_message(bot,u):#Este es el procedimiento que se ejecuta al llegar un mensaje#Vamos a utilizar un Teclado customizadokeyboard=[['Get Weather']]#Al teclado le agregaremos un Boton de Obtener el climareply_markup=ReplyKeyboardMarkup.create(keyboard)#Aqui creamos el tecladoifu.message.senderandu.message.textandu.message.chat:#Si el mensaje tiene un chatID y un contenido de texto entonces lo identificamos como textochat_id=u.message.chat.iduser=u.message.sender.usernamemessage=u.message.textprintchat_idprintmessageifmessage=='Get Weather':#Si el usuario esta enviando el comando correcto para obtener el clima entonces preguntamos su ubicaciónbot.send_message(chat_id,'please send me your location')else:bot.send_message(chat_id,'please select an option',reply_markup=reply_markup).wait()#Si no contiene el comando entonces mostramos las opciones de nuevoelifu.message.location:#Si el mensaje contiene una ubicación entonces generamos el clima en ese sitioprintu.message.locationchat_id=u.message.chat.idowm=OWM(OWMKEY)#inicializamos el API del climaobs=owm.weather_at_coords(u.message.location.latitude,u.message.location.longitude)#creamos un observationw=obs.get_weather()#creamos un objeto Weather como wprint(w)# <Weather - reference time=2013-12-18 09:20, status=Clouds>l=obs.get_location()# creamos una ubicacion respecto al objeto weatherstatus=str(w.get_detailed_status())placename=str(l.get_name())wtime=str(w.get_reference_time(timeformat='iso'))temperature=str(w.get_temperature('celsius').get('temp'))bot.send_message(chat_id,'Weather Status:'+status+' At'+placename+''+wtime+' Temperature:'+temperature+'C')#Enviamos la respuesta con el climabot.send_message(chat_id,'please select an option',reply_markup=reply_markup).wait()#enviamos de nuevo el teclado para que lo muestre en pantallaelse:printubot.send_message(chat_id,'please select an option',reply_markup=reply_markup).wait()whileTrue:#Este loop sirve para esperar por los mensajes entrantesupdates=bot.get_updates(offset=last_update_id).wait()#esperamos y obtenemos el mensajetry:forupdateinupdates:#obtenemos los datos del mensajeifint(update.update_id)>int(last_update_id):#si el mensaje que estamos recibiendo es nuevo entonces, procesarlolast_update_id=update.update_idprocess_message(bot,update)#lo enviamos a la función que lo procesacontinuecontinueexceptException:ex=Noneprinttraceback.format_exc()continue
Enter fullscreen modeExit fullscreen mode

Ahora podemos guardarlo y ejecutarlo

Si todo fue correctamente entonces obtendras algo como esto:

Genial! ahora es momento de que leas un poco mas y agregues algunas imagenes e interacción al bot,pero por ahora tenemos nuestro nuevo y reluciente BOT funcionando y siendo util!

Si quieres saber un poco más sobre este API para bots de telegram puedes ir a la página de la documentación en:

https://pythonhosted.org/twx/twx/botapi/botapi.html

También aqui puedes encontrar algunos ejemplos del API del clima:

https://github.com/csparpa/pyowm/blob/master/pyowm/docs/usage-examples.md

Espero te sea util!


Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Data Engineer, Pythonista, Go lang enthusiast, instructor.Speaker and Geek.
  • Location
    Madrid
  • Education
    Telecomm Engineer
  • Pronouns
    She/Her
  • Work
    Data Engineer at Seedtag, Freelance Technical Writer
  • Joined

More fromValery C. Briz

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp