Skip to content

Commit b1d4e35

Browse files
author
botON
committed
Update README.md to enhance documentation with clearer setup instructions, environment variables, and command usage for the PyCamp Telegram bot.
1 parent 89f829a commit b1d4e35

1 file changed

Lines changed: 133 additions & 60 deletions

File tree

README.md

Lines changed: 133 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,171 @@
11
# Este es el bot del Pycamp
22

3-
## Documentación del módulo
3+
Bot de Telegram para organizar y gestionar PyCamps: carga de proyectos, votación, cronogramas y asignación de magos.
44

5-
Puede encontrar una documentación mas detallada para programadores en [https://pyar.github.io/PyCamp_Bot](https://pyar.github.io/PyCamp_Bot)
5+
---
66

7-
## Variables de entorno
7+
## 📚 Documentación
88

9-
* TOKEN: Token del bot generado con BotFather.
10-
* PYCAMP_BOT_MASTER_KEY: Password para agregar nuevos admins.
11-
* SENTRY_DATA_SOURCE_NAME: ID de proyecto de Sentry para habilitar el monitoreo.
9+
Encontrá documentación más detallada para programadores en [https://pyar.github.io/PyCamp_Bot](https://pyar.github.io/PyCamp_Bot)
1210

13-
## Development
11+
---
1412

15-
Si queres contribuir en este proyecto lo primero que vas a necesitar es crearte un bot para hacer
16-
las pruebas.
13+
## 🚀 Desarrollo
1714

18-
Esto lo podes hacer hablandole a @BotFather que es el "Bot padre de todos los bots" de telegram.
19-
Él te a a guiar para que puedas hacer tu propio bot.
15+
### 1️⃣ Crear tu bot de prueba
2016

21-
Una vez creado el bot, deberías tener un TOKEN\_PERSONAL (BotFather te lo da en el mismo proceso de
22-
creación).
17+
Para contribuir necesitás tu propio bot de Telegram:
2318

24-
Despues instala el paquete en modo desarrollo en un virtual environment
19+
1. Hablale a [@BotFather](https://t.me/BotFather) en Telegram
20+
2. Seguí las instrucciones para crear tu bot
21+
3. Guardá el **TOKEN** que te da (lo vas a necesitar)
2522

26-
~~~bash
23+
### 2️⃣ Instalar dependencias
24+
25+
```bash
2726
python3 -m venv venv
2827
source venv/bin/activate
2928
pip install -e '.[dev]'
30-
~~~
29+
```
30+
31+
### 3️⃣ Ejecutar el bot
32+
33+
#### Opción 1: Variables inline (más rápido para probar)
34+
35+
```bash
36+
TOKEN='TU_TOKEN_AQUI' PYCAMP_BOT_MASTER_KEY='TU_CLAVE' python bin/run_bot.py
37+
```
38+
39+
#### Opción 2: Con archivo .env (recomendado)
40+
41+
1. Crear el archivo de configuración:
42+
```bash
43+
cp .env.example .env
44+
```
45+
46+
2. Editar `.env` con tus valores:
47+
```
48+
TOKEN=tu_token_aqui
49+
PYCAMP_BOT_MASTER_KEY=tu_clave_secreta
50+
SENTRY_DATA_SOURCE_NAME=tu_sentry_dsn # Opcional
51+
```
52+
53+
3. Ejecutar:
54+
```bash
55+
python bin/run_bot.py
56+
```
57+
58+
#### Opción 3: Con Docker
59+
60+
```bash
61+
make # Construye la imagen (si no existe) y ejecuta el bot
62+
```
63+
64+
**¡Listo!** Tu bot está corriendo. Probalo mandándole `/start` por Telegram.
65+
66+
---
67+
68+
## 🧪 Testing
69+
70+
### Opción 1: Local en tu máquina
71+
72+
Ejecutar todos los tests:
73+
74+
```bash
75+
pytest
76+
```
77+
78+
Ejecutar un test específico:
79+
80+
```bash
81+
pytest test/test_wizard.py
82+
```
83+
84+
Con variables de entorno inline:
85+
86+
```bash
87+
TOKEN='TOKEN_TEST' PYCAMP_BOT_MASTER_KEY='KEY_TEST' pytest
88+
```
89+
90+
### Opción 2: Con Docker
91+
92+
```bash
93+
make test
94+
```
95+
96+
---
3197

32-
y estas listo para trabajar.
98+
## 🔧 Variables de entorno
3399

34-
## Testeo
100+
| Variable | Descripción | Requerida |
101+
|----------|-------------|-----------|
102+
| `TOKEN` | Token del bot generado con BotFather | ✅ Sí |
103+
| `PYCAMP_BOT_MASTER_KEY` | Password para comandos de admin | ✅ Sí |
104+
| `SENTRY_DATA_SOURCE_NAME` | ID de proyecto de Sentry para monitoreo | ❌ No |
35105

36-
Para correr el bot ejecutá (con el virtual environment activado):
106+
---
37107

38-
~~~bash
39-
TOKEN='TOKEN_PERSONAL' PYCAMP_BOT_MASTER_KEY='KEY' python bin/run_bot.py
40-
~~~
108+
## 🎯 ¿Cómo usar el bot en un nuevo PyCamp?
41109

42-
Y listo! Tu bot está corriendo en tu máquina, esperando que alguien le escriba por telegram.
43-
Podés probarlo mandandole un `/start`
110+
### Preparación inicial
44111

45-
## ¿Cómo usar el bot en un nuevo pycamp?
112+
1. Configurar las variables de entorno (ver tabla arriba)
113+
2. Ejecutar el bot: `python bin/run_bot.py`
114+
3. Verificar que funciona enviándole `/start`
46115

47-
Primero es necesario setear las siguientes variables de entorno:
116+
---
48117

49-
* `TOKEN`: token del bot que se usará durante el pycamp (gestionar desde telegram con BotFather)
50-
* `PYCAMP_BOT_MASTER_KEY`: con alguna password secreta que se va a usar para acceder a comandos de superuser
51-
* `SENTRY_DATA_SOURCE_NAME`: ID del proyecto de Sentry "telegrambot" de la cuenta de PyAr
118+
## 👥 Comandos del bot
52119

53-
Una vez creadas las variables de entorno, correr el bot con el comando `python bin/run_bot.py`
120+
### 🔐 Para Admins
54121

55-
En este momento ya se puede hablar con el bot. ¿Qué le digo?
122+
#### Inicialización (al comienzo de cada PyCamp)
56123

57-
* `/start` para chequear que esté andando bien
124+
| Comando | Descripción |
125+
|---------|-------------|
126+
| `/su <password>` | Reclamar permisos de admin con la clave de `PYCAMP_BOT_MASTER_KEY` |
127+
| `/empezar_pycamp <nombre>` | Crear el PyCamp (pide fecha de inicio y duración) |
128+
| `/activar_pycamp <nombre>` | Activar un PyCamp específico (si hace falta) |
58129

59-
### Flujo admin
130+
#### Gestión de Proyectos
60131

61-
#### Inicialización (requerida al comienzo de cada PyCamp)
132+
| Comando | Descripción |
133+
|---------|-------------|
134+
| `/empezar_carga_proyectos` | Habilitar la carga de proyectos |
135+
| `/terminar_carga_proyectos` | Cerrar la carga de proyectos |
136+
| `/empezar_votacion_proyectos` | Activar la votación |
137+
| `/terminar_votacion_proyectos` | Cerrar la votación |
138+
| `/cronogramear` | Generar el cronograma (pide días y slots) |
139+
| `/cambiar_slot <proyecto> <slot>` | Mover un proyecto de horario |
62140

63-
* `/su <password>` para reclamar permisos de admin, reemplazando `<password>` por la contraseña que hayamos elegido en la envvar `PYCAMP_BOT_MASTER_KEY`
64-
* `/empezar_pycamp <pycamp_name>` inicia el flujo de creación de un pycamp. Lo carga en la db, pide fecha de inicio y duración. Lo deja activo.
65-
* `/activar_pycamp <pycamp_name>` activa un pycamp, en caso que haga falta.
141+
#### Gestión de Magxs
66142

67-
#### Flujo de Proyectos
143+
| Comando | Descripción |
144+
|---------|-------------|
145+
| `/agendar_magx` | Asignar magos automáticamente (9-13 y 14-19hs) |
68146

69-
* `/empezar_carga_proyectos` habilita la carga de los proyectos. En este punto los pycampistas pueden cargar sus proyectos,
70-
enviandole al bot el comando `/cargar_proyecto`
71-
* `/terminar_carga_proyectos` termina carga proyectos
72-
* `/empezar_votacion_proyectos` activa la votacion (a partir de ahora los pycampistas pueden votar con `/votar`)
73-
* `/terminar_votacion_proyectos` termina la votacion
147+
> **Nota:** Los magos deben registrarse primero con `/ser_magx`
74148
75-
Para generar el schedule:
149+
---
76150

77-
* `/cronogramear` te va a preguntar cuantos dias queres cronogramear y cuantos slots por dia tenes y hacer el cronograma.
78-
* `/cambiar_slot` toma un nombre de proyecto y un slot; y te cambia ese proyecto a ese slot.
151+
### 🙋 Para Pycampistas
79152

80-
#### Flujo de magia
153+
#### Proyectos
81154

82-
Para agendar los magos todos los candidatos tienen que haberse registrado con `/ser_magx`
155+
| Comando | Descripción |
156+
|---------|-------------|
157+
| `/cargar_proyecto` | Cargar tu proyecto (si la carga está habilitada) |
158+
| `/votar` | Votar proyectos de tu interés |
159+
| `/ver_cronograma` | Ver el cronograma del evento |
83160

84-
* `/agendar_magx` Asigna un mago por hora durante todo el PyCamp.
85-
* De 9 a 13 y de 14 a 19.
86-
* El primer día arranca después del almuerzo (14hs).
87-
* El último día termina al almuerzo (13hs).
161+
#### Sistema de Magxs
88162

89-
### Flujo pycampista
163+
| Comando | Descripción |
164+
|---------|-------------|
165+
| `/ser_magx` | Registrarte como mago |
166+
| `/ver_magx` | Ver la lista de magos registrados |
167+
| `/evocar_magx` | Llamar al mago de turno para pedir ayuda |
168+
| `/ver_agenda_magx [completa]` | Ver la agenda de magos (usa `completa` para ver todos los turnos) |
90169

91-
* `/cargar_proyecto` carga un proyecto (si está habilitada la carga)
92-
* `/votar` envia opciones para votar (si está habilitada la votacion)
93-
* `/ver_cronograma` te muestra el cronograma!
94-
* `/ser_magx` te registra como mago.
95-
* `/ver_magx` Lista los magos registrados.
96-
* `/evocar_magx` llama al mago de turno para pedirle ayuda.
97-
* `/ver_agenda_magx completa` te muestra la agenda de magos del PyCamp. El parámetro `completa` es opcional, si se omite solo muestra los turnos pendientes.
170+
---
98171

0 commit comments

Comments
 (0)