From cf7eed84bc55c0d876c6bc0d8d0958e68645b1af Mon Sep 17 00:00:00 2001 From: miteruzo Date: Tue, 2 Dec 2025 00:40:31 +0900 Subject: [PATCH] =?UTF-8?q?=E8=BB=BD=E9=87=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/main.py b/main.py index a7b83ea..6d2b1f5 100644 --- a/main.py +++ b/main.py @@ -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 ()