diff --git a/.gitignore b/.gitignore index efba7b3..8a22514 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /__pycache__ /nizika_talking.wav /youtube.py +/log.txt diff --git a/main.py b/main.py index 71cedff..66d9b5c 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ from playsound import playsound from common_module import CommonModule from youtube import * from datetime import datetime +import json class Main: @@ -30,17 +31,40 @@ class Main: italic = True) nizika_font = pygame.font.SysFont ('07nikumarufont', 50) + messages: list[str] = [] + while (True): screen.fill ((0, 255, 0)) + for i in range (4): + screen.blit ( + system_font.render ( + f'live_chat.is_alive () == {live_chat.is_alive ()}', + True, (0, 0, 0)), + (i % 2, i // 2 * 2)) + screen.blit ( + system_font.render (str (datetime.now ()), True, (0, 0, 0)), + (i % 2, 32 + i // 2 * 2)) + + if live_chat.is_alive (): + screen.blit ( + system_font.render ( + f'messages == {messages}', + True, (0, 0, 0)), + (i % 2, 64 + i // 2 * 2)) + if live_chat.is_alive (): - messages: list[str] = [c.message - for c in live_chat.get ().items] + chat_items: list = live_chat.get ().items - if messages: - message: str = random.choice (messages) + if chat_items: + chat_item = random.choice (chat_items) + chat_item.author = chat_item.author.__dict__ + message: str = chat_item.message answer: str = Talk.main (message) + with open ('log.txt', 'a') as f: + f.write (f'{datetime.now ()}\t{json.dumps (chat_item.__dict__)}\t{answer}\n') + screen.blit (balloon, (0, 0)) screen.blit ( user_font.render ( @@ -72,23 +96,6 @@ class Main: else: live_chat = pytchat.create (video_id = YOUTUBE_ID) - for i in range (4): - screen.blit ( - system_font.render ( - f'live_chat.is_alive () == {live_chat.is_alive ()}', - True, (0, 0, 0)), - (i % 2, i // 2 * 2)) - screen.blit ( - system_font.render (str (datetime.now ()), True, (0, 0, 0)), - (i % 2, 32 + i // 2 * 2)) - - if live_chat.is_alive (): - screen.blit ( - system_font.render ( - f'messages == {messages}', - True, (0, 0, 0)), - (i % 2, 64 + i // 2 * 2)) - pygame.display.update () for event in pygame.event.get (): diff --git a/talk.py b/talk.py index 268166d..503c6ce 100644 --- a/talk.py +++ b/talk.py @@ -18,17 +18,23 @@ class Talk: openai.organization = OPENAI_ORGANISATION openai.api_key = OPENAI_API_KEY - return cls.__get_message (message).content + answer: chat.chat_completion_message.ChatCompletionMessage | None \ + = cls.__get_message (message) + + return cls.DUMMY_RESPONSE if answer is None else answer.content @classmethod def __get_message (cls, message: str) \ - -> chat.chat_completion_message.ChatCompletionMessage: - return openai.chat.completions.create ( - model = 'gpt-3.5-turbo', - messages = [{'role': 'system', - 'content': 'あなたの名前は伊地知ニジカ。友達はゴートうひとりとラマ田リョウ。好きな人は喜多ちゃん。すべての語尾に「ぬ゛ん」か「だぬ゛ん」をつけて質問に短く答えろ。定期的に「ぬ゛ぅ゛ぅ゛ぅ゛ぅ゛ん゛」、「ボッチチャーン」、「あっ」のいずれかを発しろ'}, - {'role': 'user', - 'content': message}]).choices[0].message + -> chat.chat_completion_message.ChatCompletionMessage | None: + try: + return openai.chat.completions.create ( + model = 'gpt-3.5-turbo', + messages = [{'role': 'system', + 'content': 'あなたの名前は伊地知ニジカ。誕生日は毎日。友達はゴートうひとりとラマ田リョウ。好きな人は喜多ちゃん。すべての語尾に「ぬ゛ん」か「だぬ゛ん」をつけて質問に短く答えろ。定期的に「ぬ゛ぅ゛ぅ゛ぅ゛ぅ゛ん゛」、「ボッチチャーン」、「あっ」のいずれかを発しろ'}, + {'role': 'user', + 'content': message}]).choices[0].message + except openai.AuthenticationError: + return None if __name__ == '__main__':