You've already forked Curso-lenguaje-python
Add movies trivial Bot for Telegram
This commit is contained in:
67
catch-all/06_bots_telegram/07_movie2_bot/README.md
Normal file
67
catch-all/06_bots_telegram/07_movie2_bot/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# QuizBot
|
||||
|
||||
__Basado en el repositorio de [CineMonster](https://github.com/RogueFairyStudios/CineMonster)__
|
||||
|
||||
Bot de Telegram con un juego basado en preguntas sobre películas. Resumen de las funcionalidades:
|
||||
|
||||
|
||||
## **Comandos Disponibles:**
|
||||
|
||||
1. **`/start`**:
|
||||
- **Descripción**: Inicia una nueva sesión de juego para el chat.
|
||||
- **Acciones**: Crea una nueva instancia de `Session` y la almacena en `SESSIONS`. Si se encuentra una clase `Quiz` en el módulo `quiz`, la inicializa para la sesión.
|
||||
|
||||
2. **`/roll`**:
|
||||
- **Descripción**: Lanza una pregunta de trivia sobre películas.
|
||||
- **Acciones**: Llama a `show` en el objeto `Quiz` de la sesión activa. Envía una imagen de una película al chat y establece el estado del juego en "running".
|
||||
|
||||
3. **`/leaderboard`**:
|
||||
- **Descripción**: Muestra la tabla de clasificación de los jugadores.
|
||||
- **Acciones**: Envía la tabla de clasificación actual a través del `messenger`. La tabla muestra los jugadores y sus puntos.
|
||||
|
||||
4. **`/repeat`**:
|
||||
- **Descripción**: Repite la última pregunta de trivia sobre películas.
|
||||
- **Acciones**: Envía de nuevo la imagen de la película al chat junto con la pregunta sobre el título de la película.
|
||||
|
||||
5. **`/cut`**:
|
||||
- **Descripción**: Permite que un jugador abandone el juego.
|
||||
- **Acciones**: Elimina al jugador de la sesión actual y notifica al chat que el jugador ha abandonado el juego.
|
||||
|
||||
6. **`/stop`**:
|
||||
- **Descripción**: Finaliza la sesión de juego actual.
|
||||
- **Acciones**: Elimina la sesión del chat actual de `SESSIONS` y notifica al chat que el juego ha terminado.
|
||||
|
||||
7. **`/check_resps`**:
|
||||
- **Descripción**: Verifica las respuestas enviadas por los jugadores.
|
||||
- **Acciones**: Compara la respuesta del usuario con la respuesta correcta de la película y actualiza el puntaje si la respuesta es correcta.
|
||||
|
||||
|
||||
## **Funcionalidades Adicionales:**
|
||||
|
||||
- **Manejo de Temporizadores**:
|
||||
- Utiliza `apscheduler` para ejecutar `update_all_timers` cada minuto, lo que actualiza los temporizadores de todas las sesiones y verifica la expiración del tiempo de juego.
|
||||
|
||||
- **Mensajería**:
|
||||
- Usa un objeto `messenger` para enviar mensajes y fotos a los usuarios en el chat, manejando la comunicación con Telegram.
|
||||
|
||||
- **Gestión de Jugadores**:
|
||||
- Permite agregar y quitar jugadores de la sesión. Actualiza el puntaje de los jugadores en función de sus respuestas correctas.
|
||||
|
||||
- **Control de Estado del Juego**:
|
||||
- Los estados del juego (`running`, `stopped`, `timed_out`) controlan el flujo del juego, incluyendo la verificación de respuestas y el manejo de tiempos de espera.
|
||||
|
||||
- **Manejo de Errores**:
|
||||
- Maneja errores durante el proceso de actualización y respuesta, notificando a los usuarios en caso de problemas con la pregunta de trivia o el estado de la sesión.
|
||||
|
||||
|
||||
## **Estructura del Código:**
|
||||
|
||||
1. **`Session`**:
|
||||
- Maneja la lógica del juego, incluidos los jugadores, el estado de la sesión, y los temporizadores.
|
||||
|
||||
2. **`Quiz`**:
|
||||
- Se encarga de la lógica relacionada con las preguntas sobre películas, incluida la selección de una película al azar y la verificación de las respuestas.
|
||||
|
||||
3. **`Server`**:
|
||||
- Configura el bot de Telegram, maneja los comandos y los eventos, y gestiona las sesiones de juego.
|
||||
|
||||
Reference in New Issue
Block a user