/SkylineBot

:city_sunset: Telegram Bot: SkylineBot. Create skylines and play with them.

Primary LanguagePython

SkylineBot

Proyecto para la asignatura Lenguajes de Programación de la FIB (edición primavera 2020).

Bot de Telegram con el que puedes interactuar para generar y operar con skylines.

Desarrollado con Python y ANTLR.

Antes de empezar

A continuación se especifican las instrucciones para poder ejecutar el bot e interactuar con él.

Prerequisitos

Las librerias necesarias estan especificadas en el archivo requeriments.txt, para instalarlas ejecutar:

$ pip3 install -r requeriments.txt

Instalación

Una vez instaladas las librerias necesarias hace falta token.

  1. Instalar Telegram en caso de no tenerlo.
  2. Visitar a @BotFather.
  3. Utilizar el comando /newbot y proporcionar la información requerida para obtener un token. (Para información mas detallada ver https://core.telegram.org/bots#6-botfather. )

Copia el token y pegalo en archivo token.txt en la misma carpeta que bot.py.

Ahora ya es posible ejecutar el bot:

$ python3  bot.py

Ahora con el link que @BotFather ha proporcionado podemos ir al chat del bot e interactuar con él.

Interacciones con el bot

Comandos

  • /start: Inicia la conversación conmigo.
  • /help: Obten una lista de todos los comandos que me puedes enviar.
  • /author: Información sobre el autor de este bot.
  • /lst: Muestra los identificadores definidos y su correspondiente area.
  • /clean: Borra todos los identificadores definidos.
  • /save id: Guarda un skyline definido con id: id.
  • /load id: Carga un skyline que hayas guardado previamente con id: id.

Lenguaje

Creación de skylines

Simple

Para crear un skyline simple con un edificio basta con especificar: (xmin, altura, xmax) donde xmin define la posición inicial del edificio, xmax la posición final, y altura la altura.

Compuesto

Para crear un skyline compuesto por diversos edificios se especifica de la siguiente manera: [(xmin, altura, xmax),...] donde los parametros se refieren a las mismas características que en el apartado anterior.

Aleatorio

Para generar un skyline aleatorio indicamos: {n, h, w, xmin, xmax} donde n especifica el numero de edificios,** h** que los edificios tendrán una altura aleatoria entre 0 y h, w que los edificios tendrán una anchura aleatoria entre 1 y w, y por ultimo xmin y xmax que los edificios tendrán una posición de x aleatoria entre estos dos valores.

Asignación

En caso de querer darle un nombre a un skyline y poder operar con él solamente espeficicando su ID podemos hacer una asignación de la forma: a := (1,2,3) donde 'a' corresponderia al ID del skyline (1,2,3).

Operaciones

Se pueden realizar las siguientes operaciones con skylines:

  • Unión: skyline + skyline
  • Intersección: skyline * skyline
  • Replicación: skyline * N
  • Desplazamiento a la derecha: skyline + N
  • Desplazamiento a la izquierda: skyline - N
  • Reflexión: -skyline

Autora

Paula Boyano Ivars