| @@ -4,6 +4,7 @@ import math | |||
| import os | |||
| import random | |||
| import sys | |||
| import time | |||
| import wave | |||
| from datetime import datetime, timedelta | |||
| from enum import Enum, auto | |||
| @@ -60,40 +61,48 @@ def main ( | |||
| pass | |||
| waiting_balloon = (False, '', '') | |||
| last_flags_poll: float = 0 | |||
| while True: | |||
| now_m = time.monotonic () | |||
| for event in pygame.event.get (): | |||
| if event.type == pygame.QUIT: | |||
| pygame.quit () | |||
| sys.exit () | |||
| if (not balloon.enabled) and (not snack_time.enabled): | |||
| if waiting_balloon[0]: | |||
| deerjika.talk (waiting_balloon[1], waiting_balloon[2]) | |||
| waiting_balloon = (False, '', '') | |||
| try: | |||
| DB.begin_transaction () | |||
| answer_flags = (AnsweredFlag.where ('platform', Platform.YOUTUBE.value) | |||
| .where ('answered', False) | |||
| .get ()) | |||
| if answer_flags: | |||
| answer_flag = random.choice (answer_flags) | |||
| answer = Answer.find (answer_flag.answer_id) | |||
| match QueryType (answer.query_rel.query_type): | |||
| case QueryType.YOUTUBE_COMMENT: | |||
| query = Query.find (answer.query_id) | |||
| deerjika.talk (query.content, answer.content) | |||
| answer_flag.answered = True | |||
| answer_flag.save () | |||
| case QueryType.SNACK_TIME: | |||
| snack_time.play () | |||
| query = Query.find (answer.query_id) | |||
| waiting_balloon = (True, query.content, answer.content) | |||
| answer_flag.answered = True | |||
| answer_flag.save () | |||
| DB.commit () | |||
| add_query (broadcast) | |||
| except Exception as ex: | |||
| print (ex) | |||
| if now_m - last_flags_poll >= 10: | |||
| last_flags_poll = now_m | |||
| try: | |||
| DB.begin_transaction () | |||
| answer_flags = (AnsweredFlag.where ('platform', Platform.YOUTUBE.value) | |||
| .where ('answered', False) | |||
| .get ()) | |||
| if answer_flags: | |||
| answer_flag = random.choice (answer_flags) | |||
| answer = Answer.find (answer_flag.answer_id) | |||
| match QueryType (answer.query_rel.query_type): | |||
| case QueryType.YOUTUBE_COMMENT: | |||
| query = Query.find (answer.query_id) | |||
| deerjika.talk (query.content, answer.content) | |||
| answer_flag.answered = True | |||
| answer_flag.save () | |||
| case QueryType.SNACK_TIME: | |||
| snack_time.play () | |||
| query = Query.find (answer.query_id) | |||
| waiting_balloon = (True, query.content, answer.content) | |||
| answer_flag.answered = True | |||
| answer_flag.save () | |||
| DB.commit () | |||
| add_query (broadcast) | |||
| except Exception as ex: | |||
| DB.rollback () | |||
| print (ex) | |||
| game.redraw () | |||