https://github.com/pyar/pycamp_bot
Voting system for the PyCamp
https://github.com/pyar/pycamp_bot
Last synced: 8 months ago
JSON representation
Voting system for the PyCamp
- Host: GitHub
- URL: https://github.com/pyar/pycamp_bot
- Owner: PyAr
- Created: 2018-03-05T21:34:25.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-03-23T21:31:25.000Z (12 months ago)
- Last Synced: 2025-07-04T23:51:45.697Z (9 months ago)
- Language: Python
- Size: 3.32 MB
- Stars: 6
- Watchers: 10
- Forks: 26
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Este es el bot del Pycamp
## Documentación del módulo
Puede encontrar una documentación mas detallada para programadores en [https://pyar.github.io/PyCamp_Bot](https://pyar.github.io/PyCamp_Bot)
## Variables de entorno
* TOKEN: Token del bot generado con BotFather.
* PYCAMP_BOT_MASTER_KEY: Password para agregar nuevos admins.
* SENTRY_DATA_SOURCE_NAME: ID de proyecto de Sentry para habilitar el monitoreo.
## Development
Si queres contribuir en este proyecto lo primero que vas a necesitar es crearte un bot para hacer
las pruebas.
Esto lo podes hacer hablandole a @BotFather que es el "Bot padre de todos los bots" de telegram.
Él te a a guiar para que puedas hacer tu propio bot.
Una vez creado el bot, deberías tener un TOKEN\_PERSONAL (BotFather te lo da en el mismo proceso de
creación).
Despues instala el paquete en modo desarrollo en un virtual environment
~~~bash
python3 -m venv venv
source venv/bin/activate
pip install -e '.[dev]'
~~~
y estas listo para trabajar.
## Testeo
Para correr el bot ejecutá (con el virtual environment activado):
~~~bash
TOKEN='TOKEN_PERSONAL' PYCAMP_BOT_MASTER_KEY='KEY' python bin/run_bot.py
~~~
Y listo! Tu bot está corriendo en tu máquina, esperando que alguien le escriba por telegram.
Podés probarlo mandandole un `/start`
## ¿Cómo usar el bot en un nuevo pycamp?
Primero es necesario setear las siguientes variables de entorno:
* `TOKEN`: token del bot que se usará durante el pycamp (gestionar desde telegram con BotFather)
* `PYCAMP_BOT_MASTER_KEY`: con alguna password secreta que se va a usar para acceder a comandos de superuser
* `SENTRY_DATA_SOURCE_NAME`: ID del proyecto de Sentry "telegrambot" de la cuenta de PyAr
Una vez creadas las variables de entorno, correr el bot con el comando `python bin/run_bot.py`
En este momento ya se puede hablar con el bot. ¿Qué le digo?
* `/start` para chequear que esté andando bien
### Flujo admin
#### Inicialización (requerida al comienzo de cada PyCamp)
* `/su ` para reclamar permisos de admin, reemplazando `` por la contraseña que hayamos elegido en la envvar `PYCAMP_BOT_MASTER_KEY`
* `/empezar_pycamp ` inicia el flujo de creación de un pycamp. Lo carga en la db, pide fecha de inicio y duración. Lo deja activo.
* `/activar_pycamp ` activa un pycamp, en caso que haga falta.
#### Flujo de Proyectos
* `/empezar_carga_proyectos` habilita la carga de los proyectos. En este punto los pycampistas pueden cargar sus proyectos,
enviandole al bot el comando `/cargar_proyecto`
* `/terminar_carga_proyectos` termina carga proyectos
* `/empezar_votacion_proyectos` activa la votacion (a partir de ahora los pycampistas pueden votar con `/votar`)
* `/terminar_votacion_proyectos` termina la votacion
Para generar el schedule:
* `/cronogramear` te va a preguntar cuantos dias queres cronogramear y cuantos slots por dia tenes y hacer el cronograma.
* `/cambiar_slot` toma un nombre de proyecto y un slot; y te cambia ese proyecto a ese slot.
#### Flujo de magia
Para agendar los magos todos los candidatos tienen que haberse registrado con `/ser_magx`
* `/agendar_magx` Asigna un mago por hora durante todo el PyCamp.
* De 9 a 13 y de 14 a 19.
* El primer día arranca después del almuerzo (14hs).
* El último día termina al almuerzo (13hs).
### Flujo pycampista
* `/cargar_proyecto` carga un proyecto (si está habilitada la carga)
* `/votar` envia opciones para votar (si está habilitada la votacion)
* `/ver_cronograma` te muestra el cronograma!
* `/ser_magx` te registra como mago.
* `/ver_magx` Lista los magos registrados.
* `/evocar_magx` llama al mago de turno para pedirle ayuda.
* `/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.