.. | ||
collection | ||
conf | ||
interfaces | ||
miners | ||
models | ||
movie | ||
player | ||
quiz | ||
server | ||
session | ||
tests | ||
translations | ||
_config.yml | ||
docker-compose.yaml | ||
Dockerfile | ||
main.py | ||
README.md | ||
requirements.txt | ||
runtime.txt |
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:
-
/start
:- Descripción: Inicia una nueva sesión de juego para el chat.
- Acciones: Crea una nueva instancia de
Session
y la almacena enSESSIONS
. Si se encuentra una claseQuiz
en el móduloquiz
, la inicializa para la sesión.
-
/roll
:- Descripción: Lanza una pregunta de trivia sobre películas.
- Acciones: Llama a
show
en el objetoQuiz
de la sesión activa. Envía una imagen de una película al chat y establece el estado del juego en "running".
-
/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.
-
/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.
-
/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.
-
/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.
-
/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 ejecutarupdate_all_timers
cada minuto, lo que actualiza los temporizadores de todas las sesiones y verifica la expiración del tiempo de juego.
- Utiliza
-
Mensajería:
- Usa un objeto
messenger
para enviar mensajes y fotos a los usuarios en el chat, manejando la comunicación con Telegram.
- Usa un objeto
-
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.
- Los estados del juego (
-
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:
-
Session
:- Maneja la lógica del juego, incluidos los jugadores, el estado de la sesión, y los temporizadores.
-
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.
-
Server
:- Configura el bot de Telegram, maneja los comandos y los eventos, y gestiona las sesiones de juego.