{"id":21297079,"url":"https://github.com/pyar/pycamp_bot","last_synced_at":"2025-07-11T18:32:11.282Z","repository":{"id":32070907,"uuid":"123981777","full_name":"PyAr/PyCamp_Bot","owner":"PyAr","description":"Voting system for the PyCamp","archived":false,"fork":false,"pushed_at":"2025-03-23T21:31:25.000Z","size":3485,"stargazers_count":6,"open_issues_count":7,"forks_count":26,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-07-04T23:51:45.697Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyAr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-05T21:34:25.000Z","updated_at":"2025-03-23T21:31:29.000Z","dependencies_parsed_at":"2024-06-05T02:40:10.293Z","dependency_job_id":"f42a30c6-78d0-4fa2-9964-d12e725f4e5d","html_url":"https://github.com/PyAr/PyCamp_Bot","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/PyAr/PyCamp_Bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAr%2FPyCamp_Bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAr%2FPyCamp_Bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAr%2FPyCamp_Bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAr%2FPyCamp_Bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyAr","download_url":"https://codeload.github.com/PyAr/PyCamp_Bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyAr%2FPyCamp_Bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264870473,"owners_count":23676243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T14:32:54.415Z","updated_at":"2025-07-11T18:32:11.263Z","avatar_url":"https://github.com/PyAr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Este es el bot del Pycamp\n\n## Documentación del módulo\n\nPuede encontrar una documentación mas detallada para programadores en [https://pyar.github.io/PyCamp_Bot](https://pyar.github.io/PyCamp_Bot)\n\n## Variables de entorno\n\n* TOKEN: Token del bot generado con BotFather.\n* PYCAMP_BOT_MASTER_KEY: Password para agregar nuevos admins.\n* SENTRY_DATA_SOURCE_NAME: ID de proyecto de Sentry para habilitar el monitoreo.\n\n## Development\n\nSi queres contribuir en este proyecto lo primero que vas a necesitar es crearte un bot para hacer\nlas pruebas.\n\nEsto lo podes hacer hablandole a @BotFather que es el \"Bot padre de todos los bots\" de telegram.\nÉl te a a guiar para que puedas hacer tu propio bot.\n\nUna vez creado el bot, deberías tener un TOKEN\\_PERSONAL (BotFather te lo da en el mismo proceso de\ncreación).\n\nDespues instala el paquete en modo desarrollo en un virtual environment\n\n~~~bash\npython3 -m venv venv\nsource venv/bin/activate\npip install -e '.[dev]'\n~~~\n\ny estas listo para trabajar.\n\n## Testeo\n\nPara correr el bot ejecutá (con el virtual environment activado):\n\n~~~bash\nTOKEN='TOKEN_PERSONAL' PYCAMP_BOT_MASTER_KEY='KEY' python bin/run_bot.py\n~~~\n\nY listo! Tu bot está corriendo en tu máquina, esperando que alguien le escriba por telegram.\nPodés probarlo mandandole un `/start`\n\n## ¿Cómo usar el bot en un nuevo pycamp?\n\nPrimero es necesario setear las siguientes variables de entorno:\n\n* `TOKEN`: token del bot que se usará durante el pycamp (gestionar desde telegram con BotFather)\n* `PYCAMP_BOT_MASTER_KEY`: con alguna password secreta que se va a usar para acceder a comandos de superuser\n* `SENTRY_DATA_SOURCE_NAME`: ID del proyecto de Sentry \"telegrambot\" de la cuenta de PyAr\n\nUna vez creadas las variables de entorno, correr el bot con el comando `python bin/run_bot.py`\n\nEn este momento ya se puede hablar con el bot. ¿Qué le digo?\n\n* `/start` para chequear que esté andando bien\n\n### Flujo admin\n\n#### Inicialización (requerida al comienzo de cada PyCamp)\n\n* `/su \u003cpassword\u003e` para reclamar permisos de admin, reemplazando `\u003cpassword\u003e` por la contraseña que hayamos elegido en la envvar `PYCAMP_BOT_MASTER_KEY`\n* `/empezar_pycamp \u003cpycamp_name\u003e` inicia el flujo de creación de un pycamp. Lo carga en la db, pide fecha de inicio y duración. Lo deja activo.\n    * `/activar_pycamp \u003cpycamp_name\u003e` activa un pycamp, en caso que haga falta.\n\n#### Flujo de Proyectos\n\n* `/empezar_carga_proyectos` habilita la carga de los proyectos. En este punto los pycampistas pueden cargar sus proyectos,\nenviandole al bot el comando `/cargar_proyecto`\n* `/terminar_carga_proyectos` termina carga proyectos\n* `/empezar_votacion_proyectos`  activa la votacion (a partir de ahora los pycampistas pueden votar con `/votar`)\n* `/terminar_votacion_proyectos` termina la votacion\n\nPara generar el schedule:\n\n* `/cronogramear` te va a preguntar cuantos dias queres cronogramear y cuantos slots por dia tenes y hacer el cronograma.\n* `/cambiar_slot` toma un nombre de proyecto y un slot; y te cambia ese proyecto a ese slot.\n\n#### Flujo de magia\n\nPara agendar los magos todos los candidatos tienen que haberse registrado con `/ser_magx`\n\n* `/agendar_magx` Asigna un mago por hora durante todo el PyCamp.\n    * De 9 a 13 y de 14 a 19.\n    * El primer día arranca después del almuerzo (14hs).\n    * El último día termina al almuerzo (13hs).\n\n### Flujo pycampista\n\n* `/cargar_proyecto` carga un proyecto (si está habilitada la carga)\n* `/votar` envia opciones para votar (si está habilitada la votacion)\n* `/ver_cronograma` te muestra el cronograma!\n* `/ser_magx` te registra como mago.\n* `/ver_magx` Lista los magos registrados.\n* `/evocar_magx` llama al mago de turno para pedirle ayuda.\n* `/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.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyar%2Fpycamp_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyar%2Fpycamp_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyar%2Fpycamp_bot/lists"}