Skip to content

Commit 0eec3c9

Browse files
Merge pull request #121 from aprezcuba24/coffee-time
coffee time article
2 parents cfd6fc2 + 297a11f commit 0eec3c9

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
title: "CoffeeTime"
3+
pubDate: "Sun Mar 10 2024"
4+
image: "https://live.staticflickr.com/65535/53579702890_edeb445645_z.jpg"
5+
username: "aprezcuba24"
6+
categories: ["software", "tutorials"]
7+
description: "Trabajo en una oficina donde nos gusta tomar café, algo normal entre los programadores 😁. Pero como buen programador también nos gusta resolver problemas y automatizar procesos 😎.
8+
El problema era ¿Quién hace el café? 😈"
9+
---
10+
11+
Trabajo en una oficina donde nos gusta tomar café, algo normal entre los programadores 😁. Pero como buen programador también nos gusta resolver problemas y automatizar procesos 😎.
12+
13+
**El problema era ¿Quién hace el café?** 😈
14+
15+
Lo primero que se nos ocurrió fue crear un grupo de telégram donde usando el imoji ``dice`` 🎲 cada miembro lanza un dado y el que menos punto saque es el que tiene que hacer el café 😏.
16+
17+
Como es lógico hay miembros que hacen más café que otros y eso es bueno porque aumenta la competitividad y tomar un café se convierte en algo divertido.
18+
19+
Basado en esto se nos ocurrió hacer un bot que hace lo siguiente.
20+
21+
- Se registran en el bot todos los usuarios que hacen café en el grupo de telégram.
22+
- Todos los días a las 9:30 de la mañana y a las 1 de la tarde, el bot llamará a todos los miembros a que tiren el dado para ver quién hace el café.
23+
- Cuando comienza el juego, el bot registra el valor de cada dado lanzado por los usuarios.
24+
- Cuando todos los usuarios lancen el dado o manualmente se cierra el juego, el bot debe decir el ganador (o perdedor como lo prefieran) y si hay empate indicar los usuarios que deben volver a jugar en una nueva ronda.
25+
26+
Esto es groso modo las funcionalidades fundamentales que tiene el bot.
27+
28+
## Tecnologías utilizadas.
29+
30+
Todo el sistema fue desplegado en **AWS**. El uso de AWS tiene muchas ventajas. El costo puede ser muy económico o nulo porque la capa gratuita es muy generosa. Se paga por lo que se usa y el bot usa muy poco.
31+
32+
**Lambdas** El bot en si es una **lambda url**. Las lambdas siempre necesita un ejecutor, es decir, un evento que haga que se ejecuten. Lo más tradicional es usar por ejemplo **api gateway** e invocar las lambdas a través de http, pero las lambdas url va un paso más allá, no nos hace falta api gateway para ejecutarlas a través de http. La propia lambda url ya incorpora una url. Esto nos garantiza que sea más fácil de gestionar y configurar. Como es lógico las lambdas url no son convenientes en todos los escenarios, pero en nuestro caso viene como anillo al dedo.
33+
34+
**EventBridge (CloudWatch Events)** Es un servicio de AWS que nos permite ejecutar tareas periódicas. La tarea en este caso es otra lambda, que ya no es una lambda url, porque no hace falta acceder a ella vía http, sino que será ejecutada por un **schedule**. Básicamente se configura cuándo se debe ejecutar la lambda en cuestión. En nuestro caso será todos los días, de lunes a viernes, a las 9:30 de la mañana y 1 en punto de la tarde.
35+
36+
**DynamoDB** es una base de datos muy ligera que sigue básicamente el esquema **key => value**. Como se puede apreciar es muy sencilla pero para el objetivo del proyecto es suficiente.
37+
38+
**Serverles framework** Es una tecnología que nos permite gestionar de forma sencilla todo el proceso de vida de una aplicación serverless. Todo el proyecto se configura usando ficheros yml y SF nos permite desplegar de forma rápida y sencilla la aplicación en la infraestructura de AWS.
39+
40+
**Python** El código del proyecto está en este lenguaje. SF soporta varios lenguajes, es decir, es agnóstico al lenguaje de programación, pero en Python tenemos la librería **python-telegram-bot** que para mi es la mejor para crear bot de telegram.
41+
42+
**Github** es muy amigable para proyectos **opensource** y este lo es. En esta url puedes encontrar todo el código fuente del bot https://github.com/aprezcuba24/coffe_time_bot
43+
Además en Github uso los **Github actions**. Se utiliza para implementar los pipeline de despliegues.
44+
45+
## Conclusión
46+
Buscar un problema sencillo y darle solución es un ejercicio de aprendizaje importante en nuestra formación continua como desarrollador. Tecnologías gratis para hacer estos proyecto existen muchas y sin duda AWS es un ejemplo.
47+
48+
Por otro lado el desarrollo de bots de telégram es relativamente sencillo. Existe mucha documentación y espero que el código fuente de este proyecto les sea útil.

0 commit comments

Comments
 (0)