Curso-lenguaje-python/catch-all/06_bots_telegram/07_movie2_bot/README.md

3.2 KiB

QuizBot

Basado en el repositorio de 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.