diff --git a/main.py b/main.py index e1d239f..f25ab97 100644 --- a/main.py +++ b/main.py @@ -41,7 +41,9 @@ async def main ( queries_to_answers (), report_kiriban (), report_nico (), - update_kiriban_list ()) + update_kiriban_list (), + report_snack_time (), + report_hot_spring_time ()) async def queries_to_answers ( @@ -96,16 +98,7 @@ async def report_kiriban ( このことについて、何かお祝いメッセージを下さい。 ただし、そのメッセージ内には再生数の数値を添えてください。 また、つけられたタグ、コメントからどのような動画か想像し、説明してください。""" - query = Query () - query.user_id = None - query.target_character = Character.DEERJIKA.value - query.content = prompt - query.query_type = QueryType.KIRIBAN.value - query.model = GPTModel.GPT3_TURBO.value - query.sent_at = datetime.now () - query.answered = False - query.transfer_data = { 'video_code': video_code } - query.save () + _add_query (prompt, QueryType.KIRIBAN, { 'video_code': video_code }) # 待ち時間計算 dt = datetime.now () @@ -249,16 +242,7 @@ async def report_nico ( { video['description'] } ``` このことについて、みんなに告知するとともに、ニジカちゃんの感想を教えてください。""" - query = Query () - query.user_id = None - query.target_character = Character.DEERJIKA.value - query.content = prompt - query.query_type = QueryType.NICO_REPORT.value - query.model = GPTModel.GPT3_TURBO.value - query.sent_at = datetime.now () - query.answered = False - query.transfer_data = { 'video_code': video['contentId'] } - query.save () + _add_query (prompt, QueryType.NICO_REPORT, { 'video_code': video['contentId'] }) await asyncio.sleep (60) @@ -282,6 +266,45 @@ async def wait_until ( await asyncio.sleep ((datetime.combine (d, t) - dt).total_seconds ()) +async def report_snack_time ( +) -> None: + """ + おやつタイムを報知する. + """ + + while True: + await wait_until (time (15, 0)) + _add_query ('おやつタイムだ!!!!', QueryType.SNACK_TIME) + + +async def report_hot_spring_time ( +) -> None: + """ + 温泉タイムを報知する. + """ + + while True: + await wait_until (time (21, 0)) + _add_query ('温泉に入ろう!!!', QueryType.HOT_SPRING) + + +def _add_query ( + content: str, + query_type: QueryType, + transfer_data: dict | None = None, +) -> None: + query = Query () + query.user_id = None + query.target_character = Character.DEERJIKA.value + query.content = content + query.query_type = query_type.value + query.model = GPTModel.GPT3_TURBO.value + query.sent_at = datetime.now () + query.answered = False + query.transfer_data = transfer_data + query.save () + + def _format_elapsed ( uploaded_at: datetime, ) -> str: diff --git a/nicolib b/nicolib index 9fec1cf..32ecf2d 160000 --- a/nicolib +++ b/nicolib @@ -1 +1 @@ -Subproject commit 9fec1cf5f99ca2cb2a9b3ff158027a3416cc5f06 +Subproject commit 32ecf2d00fcba876ed5afe48626058b2b4795399 diff --git a/queries_to_answers.py b/queries_to_answers.py index 9c2cc3d..80fa9ab 100644 --- a/queries_to_answers.py +++ b/queries_to_answers.py @@ -9,7 +9,7 @@ from datetime import datetime from typing import TypedDict from nizika_ai.config import DB -from nizika_ai.consts import AnswerType, Character, Platform +from nizika_ai.consts import Character, Platform, QueryType from nizika_ai.models import Answer, AnsweredFlag, Query from nizika_ai.talk import Talk @@ -83,7 +83,6 @@ def add_answer ( answer.character = character.value answer.content = Talk.main (message, user_name, histories, goatoh_mode = character == Character.GOATOH) - answer.answer_type = query.query_type answer.sent_at = datetime.now () answer.save () add_answered_flags (answer) @@ -101,15 +100,26 @@ def add_answered_flags ( 返答モデル """ - answer_type: AnswerType + answer_type: QueryType try: - answer_type = AnswerType (answer.answer_type) + answer_type = QueryType (answer.query.query_type) except (TypeError, ValueError): return - if answer_type in (AnswerType.YOUTUBE_REPLY,): + if answer_type in (QueryType.YOUTUBE_COMMENT, + QueryType.YOUTUBE_COMMENT, + QueryType.KIRIBAN, + QueryType.NICO_REPORT, + QueryType.SNACK_TIME, + QueryType.HOT_SPRING): add_answered_flag (answer, Platform.YOUTUBE) - if answer_type in (AnswerType.BLUESKY_REPLY,): + + if answer_type in (QueryType.BLUESKY_COMMENT, + QueryType.BLUESKY_SYSTEM, + QueryType.KIRIBAN, + QueryType.NICO_REPORT, + QueryType.SNACK_TIME, + QueryType.HOT_SPRING): add_answered_flag (answer, Platform.BLUESKY)