Planeta Universidad

December 13, 2018

Púlsar :: Asociación de Software Libre de la Universidad de Zaragoza

Bot de Telegram
Desde la aparición de los bots de telegram, se han creado una cantidad inmensa de bibliotecas para poder crear un bot propio. En este post están los pasos para poder crear uno utilizando Python.

Qué es un bot en Telegram

Los bots de telegram son programas accesibles desde los diferentes clientes de telegram. Dentro de la aplicación, actuan como un usuario más aunque podemos indicarles que para cada mensaje actúen de una determinada forma. Por ejemplo, que si les enviamos la ubicación nos muestre los sitios de interés mas cercanos o que al mandar una nota de voz nos la guarde y nos recuerde más adelante.

Lo atractivo es que no tenemos que montar ni mantener toda la infraestructura que haría falta si no tuvieramos estos bots. Por ejemplo un servidor que acepte mensajes, los trate y responda y un cliente desde el cual mandarlos.

Un ejemplo concreto

El primer bot que programé surgió a raiz de dos necesidades al comenzar la universidad.

  • Saber cuándo tenía que asistir a las clases y en que aula se impartian.
  • Saber los horarios de los tranvías de la ciudad para cada parada.

Desde entonces he ido añadiendo distintas funcionalidades conforme las necesitaba, incluso tenía un comando para resolver integrales… También he ido rediseñando los diferentes bots que he ido haciendo consiguiendo que fueran cada vez más versátiles y mantenibles.

Primeros pasos

Como ya he comentado antes, el lenguaje elegido para este bot es Python en su versión 3.5. Existen varias bibliotecas que nos ofrecen la posibilidad de realizar un bot, durante mucho tiempo he utilizado telepot y la recomiendo ya que, al menos en mi caso, no he tenido ningún problema y es muy sencilla de utilizar. Sin embargo estos últimos meses he estado utilizando python-telegram-bot y es la que voy a utilizar en este caso ya que me ha resultado más fácil de usar.

Una vez elegida la biblioteca, para instalarla se utiliza el siguiente comando:

  pip3 install python-telegram-bot

Como este es un bot muy sencillo, con un solo fichero será mas que suficiente, aunque es recomendable tener una estructura un poco mas compleja en caso de que nuestro bot crezca ya que eso lo hace mucho más mantenible.

Dicho esto, la estructura del bot será la siguiente:

telegram-bot/
└── main.py

Obtener un token para nuestro bot

Para que nuestro bot funcione, es necesario crearlo. Irónicamente el proceso de creación de un bot de telegram es llevado a cabo por un bot de telegram. Este bot se llama BotFather y los pasos para la creación son los siguientes:

Primero comenzamos una nueva conversación con el bot para ello le damos a /start

conversación botfather nada mas abrir el chat

Tras este paso, el bot nos mostrará una serie de opciones entre las cuales se encuentra la que nos interesa: /newbot.

conversación botfather tras ejecutar el comando /help

Siguiendo las instrucciones, le damos un nombre a nuestro bot:

conversación botfather nada más obtener el token del nuevo bot

Con esto nuestro bot ya esta creado, y el BotFather nos devuelve el token que necesitamos para que nuestro bot pueda acceder a los mensajes que le mandamos.

Objetivos del bot

Para este ejemplo, nuestro bot va a contar con tres comandos muy sencillos:

  • /start: Este comando es el que se ejecuta por defecto al entrar por primera vez en el bot y normalmente sirve para explicar a nuestro usuario como utilizar el bot.
  • /hello: Comando con el cual el bot devolverá un mensaje de saludo.
  • /add: Este comando sumara los numeros que se le pasen como parametro devolviendo el resultado en un mensaje. Ej. /add 1 2 3 nos devolverá 6

Tambíen contará el numero de palabras y de letras si le mandamos solamente texto

Manos a la obra

Manejadores de los mensajes

def start(bot, update):
    """ This function will be executed when '/start' command is received """
    message = "Welcome to the coolest bot ever!"
    bot.send_message(chat_id=update.message.chat_id, text=message)


def hello(bot, update):
    """ This function will be executed when '/hello' command is received """
    greeting = "Hi there, {}".format(update.effective_user.username)
    bot.send_message(chat_id=update.message.chat_id, text=greeting)


def add(bot, update, args):
    """ This function will be executed when '/add arg1, arg2, ...' command is received """

    # First converts the string list to a int list and then add all the elems
    result = sum(map(int, args))
    message = "The result is: {}".format(result)
    bot.send_message(chat_id=update.message.chat_id, text=message)


def plain_text(bot, update):
    """ This function will be executed when plain text message is received """
    text = update.message.text
    words_count = len(text.split())
    letters_count = len(''.join(text).replace(' ', ''))
    message = "Your message has {words} words and {letters} letters".format(
        words=words_count, letters=letters_count)
    bot.send_message(chat_id=update.message.chat_id,
                     parse_mode='markdown', text=message)

Estas funciones serán las que se ejecuten cuando el texto correspondiente llegue a nuestro bot. Pueden tener cualquier nombre, aunque es recomendable poner nombres descriptivos para que sea todo más legible. Lo que si que describe la biblioteca es que estas funciones, que hacen de manejadores, reciben como primer parámetro un objeto bot el cual se usa para interactuar con la api de telegram para mandar mensajes descargar archivos, subir archivos, etc… y como segundo parámetro un objeto update el cual contiene el mensaje.

Un caso especial es la funcion add que tiene un tercer parámetro con la lista de argumentos.

Función principal

def main(bot_token):
    """ Main function of the bot """
    updater = Updater(token=bot_token)
    dispatcher = updater.dispatcher

    # Command handlers
    start_handler = CommandHandler('start', start)
    hello_handler = CommandHandler('hello', hello)
    add_handler = CommandHandler('add', add, pass_args=True)

    # Other handlers
    plain_text_handler = MessageHandler(Filters.text, plain_text)

    # Add the handlers to the bot
    dispatcher.add_handler(start_handler)
    dispatcher.add_handler(hello_handler)
    dispatcher.add_handler(add_handler)
    dispatcher.add_handler(plain_text_handler)

    # Starting the bot
    updater.start_polling()

En la función principal se define un objeto updates que estará realizando peticiones a la api de telegram obteniendo todos los nuevos mensajes que lleguen al bot. Para ello se define utilizando el token obtenido con el BotFather.

También es donde le indicamos qué funciones tiene que ejecutar cuando lleguen los distintos tipos de mensajes.

Los CommandHandler definen manejadores para los comandos. El primer parámetro indica el texto del comando y el segundo parámetro indica la función a ejecutar cuando se le mande dicho comando. En caso de que el comando tenga parámetros, como el comando add se le indica mediante el parametro pass_args.

El MessageHandler define un manejador para diferentes tipos de mensajes. En este caso, el primer parametro indica que si llega texto plano, la funcion que se debe ejecutar sea plain_text. Existen diferentes tipos de mensajes en telegram y se indican mediante el objeto Filter. Los tipos de filtros en la documentación de la biblioteca.

Código completo de nuestro bot

from telegram.ext import Updater
from telegram.ext import CommandHandler
from telegram.ext import MessageHandler, Filters

def start(bot, update):
  """ This function will be executed when '/start' command is received """
  message = "Welcome to the coolest bot ever!"
  bot.send_message(chat_id=update.message.chat_id, text=message)


def hello(bot, update):
  """ This function will be executed when '/hello' command is received """
  greeting = "Hi there, {}".format(update.effective_user.username)
  bot.send_message(chat_id=update.message.chat_id, text=greeting)


def add(bot, update, args):
  """ This function will be executed when '/add arg1, arg2, ...' command is received """

  # First converts the string list to a int list and then add all the elems
  result = sum(map(int, args))
  message = "The result is: {}".format(result)
  bot.send_message(chat_id=update.message.chat_id, text=message)

def main(bot_token):
  """ Main function of the bot """
  updater = Updater(token=bot_token)
  dispatcher = updater.dispatcher

  # Command handlers
  start_handler = CommandHandler('start', start)
  hello_handler = CommandHandler('hello', hello)
  add_handler = CommandHandler('add', add, pass_args=True)

  # Other handlers
  plain_text_handler = MessageHandler(Filters.text, plain_text)

  # Add the handlers to the bot
  dispatcher.add_handler(start_handler)
  dispatcher.add_handler(hello_handler)
  dispatcher.add_handler(add_handler)
  dispatcher.add_handler(plain_text_handler)

  # Starting the bot
  updater.start_polling()

if __name__ == "__main__":
  TOKEN = "YOUR_TOKEN_HERE"
  main(TOKEN)

La entrada Bot de Telegram se publicó primero en .

by Vlad Teletin at Thu Dec 13 09:45:03 2018

December 12, 2018

ASLUCO :: Aula de Software Libre de la Universidad de Córdoba

Reunión final de cuatrimestre del Aula
Para hacer un breve resumen del cuatrimestre y despedirnos antes de las vacaciones, se convoca a reunión extraordinaria del Aula de Software Libre.

Día: jueves 20 de diciembre
Hora: 13.30 horas
Lugar: Despacho del Aula. Segunda planta del Ed. Ramón y Cajal.

El orden del día es el siguiente:

  1. Informe del coordinador
  2. Propuesta de actividades del segundo cuatrimestre.

La duración es de 30 minutos. A continuación nos haremos una foto de grupo en la entrada del Edificio, se ruega que los que tengan ropa corporativa acudan con ella; y después nos tomaremos algo en cafetería para despedir el año.

La entrada Reunión final de cuatrimestre del Aula se publicó primero en Aula de Software Libre.

by Sergio Gómez at Wed Dec 12 12:36:42 2018

December 11, 2018

OSL-ULL :: Oficina de Software Libre - Universidad de La Laguna

Abierta ya las inscripciones en el XIII Concurso Universitario de Software Libre y IX Premio Local ULL
¡El IX Premio Local Universidad de La Laguna (ULL) del Concurso Universitario de Software Libre (#CUSL) ya está aquí! Este certamen, a nivel estatal en su XIII edición, está abierto desde el 19 de noviembre a estudiantes del territorio español universitarios de grado o posgrado, ciclo de formación de grado medio o superior, o de bachillerato. Quienes, perteneciendo a la ULL, se inscriban en dicho certamen participarán automaticamente en la fase local. La finalidad del concurso es elaborar un proyecto de software, hardware o documentación técnica libre.

El plazo de inscripción estará abierto hasta el 15 de febrero de 2019. Además los participantes de Grado en Ingeniería Informática, Grado en Ingeniería Electrónica Industrial y Automática, Grado en Matemáticas y Grado en Física podrán obtener hasta 3 créditos ECTS en función de los efuerzos realizados en sus poryectos.

Los premios que se otorgarán en la modalidad local de la ULL serán los siguientes:

  • Primer premio al mejor proyecto, dotado con 500€
  • Segundo premio al mejor proyecto, dotado con 250€
  • Premio especial al mejor proyecto que destaque además en algún aspecto dentro o fuera de los valorados en el los criterios de evaluación, dotado con 250€

y en el concurso estatal:

  • Premio al mejor proyecto Científico/Investigación: destinado al mejor proyecto científico o de investigación, dotado con 250 euros
  • Premio al mejor proyecto Educativo/Ocio: destinado al mejor proyecto en el ámbito educativo u ocio, dotado con 250 euros
  • Premio al mejor proyecto de Sistemas/Seguridad: destinado al mejor proyecto de sistemas o seguridad, dotado con 250 euros
  • Premio al mejor proyecto Cloud/Web: destinado al mejor proyecto Cloud o desarrollo web, dotado con 250 euros

Los criterios de evaluación son los mismos para ambos concursos, y son los siguientes:

  • Impacto del proyecto en la comunidad del software libre y la sociedad (30% de la puntuación)
  • Calidad del desarrollo y uso de la forja (30% de la puntuación)
  • Viabilidad del proyecto (15% de la puntuación)
  • Grado de terminación (15% de la puntuación)
  • Grado de accesibilidad (10% de puntuación)

Puesto que para nuestros estudiantes puede ser difícil escoger un proyecto interesante, planificarse o enfrentarse al reto de la manera más conveniente, la Oficina de Software Libre en colaboración con la ESIT pone a disposición de los participantes de la ULL la posibilidad de recurrir a un mentor para ayudarlos en lo que sea posible. Los participantes utilizarán un blog donde contarán su experiencia en el desarrollo durante el curso académico, además emplearán una forja para alojar el código fuente y alentar a la comunidad a colaborar con su proyecto. Puedes ponerte en contacto con nosotros en info@osl.ull.es y comentarnos las posibles dudas que tengas.

Desde la Oficina del Software Libre animamos a todas aquellas personas que cumplan los requisitos a que se inscriban en el formulario de inscripción y participen, ya que es una buena oportunidad de obtener reconocimiento por los proyectos realizados.

 

Este artículo ha sido realizado por Cristian Díaz Hernández y Cecilia V. Becerra Brito

El artículo Abierta ya las inscripciones en el XIII Concurso Universitario de Software Libre y IX Premio Local ULL es contenido del sitio Oficina de Software Libre (OSL).

by Cristian Díaz Hernández at Tue Dec 11 17:12:44 2018

November 26, 2018

ASLUCO :: Aula de Software Libre de la Universidad de Córdoba

Reunión del Aula de Software Libre (diciembre 2018)
Para hacer un breve resumen del cuatrimestre y despedirnos antes de las vacaciones, se convoca a reunión extraordinaria del Aula de Software Libre.

Día: jueves, 20 de diciembre
Hora: 13.30 horas (primera y única convocatoria)
Lugar: Despacho del Aula. Segunda planta del Ed. Ramón y Cajal.

El orden del día es el siguiente:

  1. Informe del coordinador
  2. Propuesta de actividades del segundo cuatrimestre.

La duración es de 30 minutos.

La entrada Reunión del Aula de Software Libre (diciembre 2018) se publicó primero en Aula de Software Libre.

by Sergio Gómez at Mon Nov 26 15:38:41 2018

OSL-UGR :: Oficina de Software Libre - Universidad de Granada

Campaña de donación de material informático con software libre para centros educativos (2018)
Desde la Oficina de Software Libre queremos ayudar a que los centros educativos de educación primaria dispongan de los recursos informáticos necesarios para sus aulas y acercar el software libre a escolares de educación primaria. Por este motivo, y utilizando todos los equipos que la Universidad de Granada designa para donación, vamos a realizar una Campaña de donación de material informático con software libre para centros educativos de educación primaria.

           Aula ordenadores con software libre

Así, si formas parte de un centro educativo de educación primaria, eres parte de la asociación de padres madres o familias del centro, o simplemente conoces algún centro en esa situación, el día 10 de diciembre se abrirá el plazo de solicitudes para ser beneficiario de esta campaña.
Atenderemos las solicitudes recibidas dependiendo de la disponibilidad de material que tengamos cuando finalice la campaña y atendiendo las solicitudes, siempre que cumplan con las condiciones, por estricto orden de llegada.

Toda la información y el formulario de inscripción estarán disponibles en nuestra página web a partir del 10 de diciembre en el siguiente enlace:

Solicitud Campaña de donación de material informático con software libre para centros educativos (2018)

by oselit@ at Mon Nov 26 10:35:48 2018

November 23, 2018

OSL-ULL :: Oficina de Software Libre - Universidad de La Laguna

Un canario, figura principal de la GNU Health Con 2018
En la tercera edición del GNU Health Con se  celebrará el décimo aniversario del proyecto GNU Health, un sistema de software libre que nació gracias al canario Luis Falcón, cuyo fin principal es la gestión hospitalaria, así como de servir de registro médico electrónico y como sistema de información de salud. GNU Health Con es una conferencia de carácter internacional que cada año organiza la ONG GNU Solidario, y que tendrá lugar en Las Palmas de Gran Canaria desde hoy viernes 23 hasta el domingo 25 de noviembre.

Este relevante evento, que tendrá lugar en el hotel Exe Las Canteras, contará con tres jornadas que responderán a diferentes temáticas:

  • El primer día se centrará en el XI Taller Internacional sobre eSalud en Economías Emergentes y tendrá lugar desde las 9.00 hasta las 18.00 horas con pausas para el café y el almuerzo. Además, contará con la presencia de Isabel Bagueros, quien se encarga de la dirección del Proyecto Tor. Habrá ocasión de participar en discusiones abiertas y ser testigo de diferentes experiencias compartidas por parte de organizaciones alrededor del mundo.
  • La segunda jornada tendrá lugar en el mismo horario pero esta vez la figura a destacar será el informático, médico y presidente y creador del proyecto GNU Health, Luis Falcón Martín. La temática, en esta ocasión, girará en torno a la propiamente dicha GNU Health Con 2018. Como broche final de esta jornada, se entregarán los “Premios de Medicina en Salud Social GNU 2018” a quienes se esmeran por aumentar la calidad de vida de tantas personas que lo necesitan.
  • El domingo, último día del evento, se titula GNU Health Hack Day y se dedicará a talleres sobre la instalación e implementación de GNU Health, para lo cual los asistentes deberán llevar consigo sus ordenadores portátiles. El horario será de 09.00 a 14.00 horas.

Entre los sponsors de este evento figuran Open SUSE y Thymbra y como colaboradores encontramos a la Free Software Foundation, el Cabildo de Gran Canaria y la Consejería de Cooperación Institucional y Solidaridad Internacional de dicho Cabildo.

Desde la OSL esperamos que el Software Libre se siga empleando de maneras tan altruistas como ésta, y que sus beneficios se sigan extendiendo a todos los rincones de la sociedad de la que todos y todas formamos parte. Como dice Luis Falcón, la salud es “un derecho humano no negociable”.

 

 

 

 

 

 

El artículo Un canario, figura principal de la GNU Health Con 2018 es contenido del sitio Oficina de Software Libre (OSL).

by Cecilia Becerra Brito at Fri Nov 23 13:10:18 2018

November 20, 2018

OSL-UGR :: Oficina de Software Libre - Universidad de Granada

PyDay Granada 2018, 14 y 15 de diciembre de 2018
El equipo de Python Granada junto con esta Oficina hemos preparado algunas actividades relacionadas con Python para finalizar el 2018 con la mejor de las sensaciones, y para ello hemos hecho este estupendo cartel.
La idea original era organizar un PyDay -una jornada con varias charlas cortas sobre Python-, pero como nos sabía a poco hemos decidido organizar también un taller de iniciación a Python desde cero. El único requisito para asistir a cualquier de los eventos es tener ganas de aprender, ¡todo lo demás lo explicaremos allí!

Programa

  •  Viernes 14 de diciembre, a las 17:00: Taller de iniciación a Python. Se propondrán una serie de ejercicios, disponibles en este repositorio, de varios niveles, para que las personas que acudan al taller vayan aprendiendo de manera dinámica. Habrá varios mentores y mentoras disponibles para resolver dudas de manera más personalizada y para que podáis ir a diferentes ritmos de aprendizaje.

¿Quieres mentorizar en el taller y enseñar a otras personas todo lo que sabes? Apúntate aquí hasta el 9 de diciembre.

¿Quieres asistir para aprender Python desde cualquier nivel? Apúntate aquí hasta el 9 de diciembre.

¡Aviso! Las plazas son limitadas y se dará prioridad a personas que no tengan experiencia con Python y a colectivos infrarrepresentados en la tecnología.

Para que sea una tarde memorable, os invitaremos a merendar, gracias al patrocinio de la Asociación de Python España, que financia la actividad.

  •  Sábado 15 de diciembre, a las 10:00: PyDay. Pasaremos la mañana disfrutando de 6 charlas que profundizarán en distintos aspectos o aplicaciones de Python para continuar aprendiendo y para las que hemos buscado a seis chicas que vendrán a enseñarnos sobre temas diversos, todos interesantes, relacionados con qué hacen ellas con Python y para qué lo usan. La lista de ponentes y el título de sus charlas las tenéis detalladas en la siguiente lista.
10:00 – Introducción al testeo con Mocks, por Ester Ramos (@estramcar)
10:30 – La evolución de los dinosaurios: migrando de Python 2 a Python 3, por Marta Gómez (@Mrs_DarkDonado  )
11:00 – F2PY: Cómo combinar Fortran en Python, por Esther Puertas (@estherpuertasgm)
11:30 – Pausa para un desayuno a cargo de Python España
12:00 – Mi CASA: venturas y desventuras de una radioastrónoma en Python, por Ana Karla Díaz
12:30 – Deep Learning con Python y Keras, por Anabel Gómez (@nescence_)
13:00 – Trabajando con Python en ciencia e ingeniería, por Mabel Delgado (@mabeldelgadob)
También es importante que sepáis que en todos los actos que componen este PyDay, tanto el taller como las charlas, pondremos en práctica un Código de Conducta para todos los asistentes que tenéis publicado en sl.ugr.es/COC_OSL_UGR.
Ambos eventos se realizarán en el Aula A06 de la Facultad de Ciencias de Granada. No olvides seguir en Twitter tanto a @python_granada como a la @OSLUGR para enterarte de todas las novedades. ¡Te esperamos!
Si queréis contactar con el grupo de Python Granada, simplemente escribir a pythongranada@gmail.com y si queréis contactar con la oficina, simplemente escribir a osl@ugr.es. Todos los demás contactos, podéis hacerlos por tweeter, ya sea en abierto o en privado.

by python_granada at Tue Nov 20 13:49:39 2018

November 07, 2018

Púlsar :: Asociación de Software Libre de la Universidad de Zaragoza

Hackatón Visualización de la Movilidad
El sábado 22 de septiembre participamos junto a Mapeado Colaborativo en la Hackatón Visualización de la Movilidad, organizado por el Ayuntamiento de Zaragoza (mediante Etopia Centro de Arte y Tecnología) y el Consorcio de Transportes del Área de Zaragoza con motivo de la Semana Europea de la Movilidad.

Este evento consistía en conseguir producir un trabajo audiovisual en menos de 10 horas tomando los datos abiertos de BiZi, tarjeta ciudadana e interbús; para conseguir comprender de forma visual la movilidad en la ciudad.

Varias personas sentadas en una mesa trabajando.

El equipo Mapeado Colaborativo-Púlsar trabajando en la Hackatón.

Desde nuestro grupo decidimos manejar los datos de BiZi Zaragoza, ya que consideramos mejor estructurados, al tener tanto id de estación como instante temporal de inicio y llegada de cada viaje. Además, unimos estos datos con la componente espacial de cada estación, tomada mediante consulta a la base de datos geográfica libre de OpenStreetMap.

Subimos los datos filtrados y georreferenciados a CARTO, donde le dimos forma visual y le pusimos efectos para que aparecieran y desaparecieran en el instante de tiempo que cada acción se generaba, y que le diese el color correspondiente según si era tomar o dejar una bici. También se añadió una gráfica temporal en la parte inferior para ver cómo variaba la utilización de las bicicletas a lo largo de la semana.

La visualización final puede verse en https://robot8a.carto.com/builder/1276953c-759d-4fa1-8785-3f8541934974/embed

Dos personas presentando en la pantalla un trabajo.

Presentando el trabajo final frente al jurado del evento.

Un mes después, desde Etopia nos propusieron mostrar nuestro trabajo a la ciudadanía, exponiendo un extracto de un día tanto en las pantallas interiores como en las exteriores del edificio. El trabajo de edición para ajustarse a las pantallas fue realizado por Néstor Lizalde.

Pantalla de un edificio mostrando los logos de Mapeado Colaborativo y Púlsar.

Logos de Mapeado Colaborativo y Púlsar como parte de la visualización en la pantalla exterior de Etopia.

Como conclusión de la jornada nos pareció un evento muy interesante y que estaríamos dispuestos a repetir y mejorar nuestro trabajo. Hicimos lazos entre compañeros y aprendimos técnicas nuevas. Estaremos encantados de poder colaborar en próximas ocasiones con Etopia y de pedir a las administraciones que liberen más datos para realizar más y mejores interpretaciones de ellos, además de para poder ser accesibles para toda la ciudadanía. También se ha demostrado que se pueden hacer grandes logros con software libre y datos abiertos, allanando el camino para futuros trabajos abiertos para todos.

La entrada Hackatón Visualización de la Movilidad se publicó primero en .

by Héctor Ochoa at Wed Nov 7 12:53:56 2018

October 29, 2018

OSHL-UMH :: Oficina de Software Libre y Hardware Libre - Universida Miguel Hernández de Elche

October 26, 2018

vista"

Tech Youth: Digital Skills

vista"

La reforma del copyright y el software libre

vista"

Herramientas de seguimiento y analítica web en proyectos Drupal

vista"

Martes de Software Libre. Introducción a Tor

vista"

Taller de Blockchain (3 sesiones)

vista"

Martes de Software Libre. Introducción a Rust, un lenguaje de sistemas moderno y seguro

vista"

Martes de Software Libre. Introducción a Python

vista"

Martes de Software Libre. Taller de interconexión de redes

September 20, 2018