@@ -41,7 +41,9 @@ async def main ( | |||||
queries_to_answers (), | queries_to_answers (), | ||||
report_kiriban (), | report_kiriban (), | ||||
report_nico (), | report_nico (), | ||||
update_kiriban_list ()) | |||||
update_kiriban_list (), | |||||
report_snack_time (), | |||||
report_hot_spring_time ()) | |||||
async def queries_to_answers ( | 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 () | dt = datetime.now () | ||||
@@ -249,16 +242,7 @@ async def report_nico ( | |||||
{ video['description'] } | { 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) | await asyncio.sleep (60) | ||||
@@ -282,6 +266,45 @@ async def wait_until ( | |||||
await asyncio.sleep ((datetime.combine (d, t) - dt).total_seconds ()) | 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 ( | def _format_elapsed ( | ||||
uploaded_at: datetime, | uploaded_at: datetime, | ||||
) -> str: | ) -> str: | ||||
@@ -1 +1 @@ | |||||
Subproject commit 9fec1cf5f99ca2cb2a9b3ff158027a3416cc5f06 | |||||
Subproject commit 32ecf2d00fcba876ed5afe48626058b2b4795399 |
@@ -9,7 +9,7 @@ from datetime import datetime | |||||
from typing import TypedDict | from typing import TypedDict | ||||
from nizika_ai.config import DB | 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.models import Answer, AnsweredFlag, Query | ||||
from nizika_ai.talk import Talk | from nizika_ai.talk import Talk | ||||
@@ -83,7 +83,6 @@ def add_answer ( | |||||
answer.character = character.value | answer.character = character.value | ||||
answer.content = Talk.main (message, user_name, histories, | answer.content = Talk.main (message, user_name, histories, | ||||
goatoh_mode = character == Character.GOATOH) | goatoh_mode = character == Character.GOATOH) | ||||
answer.answer_type = query.query_type | |||||
answer.sent_at = datetime.now () | answer.sent_at = datetime.now () | ||||
answer.save () | answer.save () | ||||
add_answered_flags (answer) | add_answered_flags (answer) | ||||
@@ -101,15 +100,26 @@ def add_answered_flags ( | |||||
返答モデル | 返答モデル | ||||
""" | """ | ||||
answer_type: AnswerType | |||||
answer_type: QueryType | |||||
try: | try: | ||||
answer_type = AnswerType (answer.answer_type) | |||||
answer_type = QueryType (answer.query.query_type) | |||||
except (TypeError, ValueError): | except (TypeError, ValueError): | ||||
return | 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) | 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) | add_answered_flag (answer, Platform.BLUESKY) | ||||