Git Product home page Git Product logo

pycamp_bot's Introduction

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

Variables de entorno

  • TOKEN: Token del bot generado con BotFather.
  • PYCAMP_BOT_MASTER_KEY: Password para agregar nuevos admins.

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 virtualenv

virtualenv -p python3 venv
source venv/bin/activate
pip install -e .

y estas listo para trabajar.

Testeo

Para correr el bot ejecutá (desde el virtualenv):

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

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

  • /su <password> para reclamar permisos de admin, reemplazando <password> por la contraseña que hayamos elegido en la envvar PYCAMP_BOT_MASTER_KEY
  • /agregar_pycamp <pycamp_name> para crear un pycamp en la deb
  • activar_pycamp <pycamp_name> activa un pycamp
  • /empezar_pycamp setea la fecha de inicio del pycamp activo
  • /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 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!

pycamp_bot's People

Contributors

alexmarygr avatar cam-ila avatar chechobattista avatar delaboremercurio avatar echeva avatar facundobatista avatar gabiandi avatar galloramiro avatar jeremyakd avatar juanlandolfi avatar makelmagus avatar marcorichetta avatar sofide avatar sofidenner avatar winnaz avatar xcancerberox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pycamp_bot's Issues

Acomodar el código para que sea mas lindo

Al mirar un poco el proyecto, se puede observar que necesita un poco de cariño en temas de identación y demas. Capaz mi linter es muy inchapelotas, pero entrar y ver esto me pone nervioso:
2023-03-24-110558_1920x1080_scrot
2023-03-24-111956_1375x166_scrot
2023-03-24-112149_1277x355_scrot
2023-03-24-112217_1513x1018_scrot

/empiezaproyecto Avisar cuando empieza el proyecto

  • "/empiezaproyecto + NOMBREPROYECTO + MENSAJEPERSONALIZADO /"(pinguee a la gente que se anotó) y avise en el grupo general que empezó. Ver si el mensaje va a ser standar y en el segundo campo poner solo el lugar o si se manda lo que escriban ahí.

Multiple Fixs

  • 1)Evaluar Model Slots
  • 2)decicir Model projects level
  • 3) que el boolean wizard de la tabla pycampista sea unique constrait
  • 4) initialize_db.py
  • 5)separar handlers y embellecerlos
  • 6)Sacar variables globales
  • 7)crear clase Bot
  • 8)informar al usuario que puede /cancel
  • 9) Desharcodear los usuario en admin
  • 10)que chequee por chat_id en vez de por username
  • 11) decirle por persona que grupo
  • 12)cambiar de polling a irq
  • 13)modelo de pycamp
  • 14)que la carga de proyectos te pis descricion
  • 15)que en la votacion puedas pedir mas info
  • 16)@admin_required

BUG - db naming

Se normalizó el grabado en la DB para los proyectos, se busca replicar ese comportamiento.
Ej si se guarda un pycamp con el nombre "Pycamp 2023" rompe porque espera una sola palabra.
Lo mismo, si se activa con "pycamp 2023" no lo encontraria porque es key sensitive.

Propuesta para chequeo de lista

En PyCamp Bot, existe un problema, que consiste en la dificultad de chequeo de votación entre los participantes. Esto se da porque no tenemos forma de verificar que todos los presentes en el evento, inicialicen el mismo con el /start.

Cómo garantizaríamos esto? Es entonces que mi propuesta, implica otorgarle permiso del grupo al bot, para poder extraer desde los grupos de PyCampistas que efectivamente participan, la lista de users directamente, sin necesidad de su propia intervención mediante la inicialización manual del bot.

Te deja votar sin tener un alias

Si no tenés un alias tendría que usar algún otro id de usuario de telegram, o sinó te tendría que explicar como agregarte un alias, pero no te tendría que dejar votar.

Mejorar la funcionalidad de lx magx

1)Que le pases una lista de gente que es puede ser magx
2)que randomize cada slot de magxs
3) que cuando cambie lx magx de turno pingee al grupo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.