Fix data race with messageGPT

main
pluja 2023-04-19 21:41:33 +02:00
rodzic e701b77037
commit ca760f0d33
1 zmienionych plików z 5 dodań i 6 usunięć

11
main.py
Wyświetl plik

@ -127,9 +127,8 @@ def restricted(func):
return wrapped
async def messageGPT(text: str, chat_id: str, user_name="User"):
async def messageGPT(text: str, chat_id: str, user_name="User", user_data={}):
await bot.send_chat_action(chat_id, action=types.ChatActions.TYPING)
user_data = await getUserData(chat_id)
user_data['context'].append({"role": "user", "content": text})
if len(user_data['context']) > user_data["options"]["max-context"]:
user_data['context'].pop(0)
@ -153,7 +152,7 @@ async def messageGPT(text: str, chat_id: str, user_name="User"):
user_data["usage"]['chatgpt'] += int(response.get('usage', {"total_tokens": 0})["total_tokens"])
database.update_user(chat_id, user_data)
return assistant_message
return assistant_message, user_data
@dp.message_handler(commands=['start'])
@ -278,7 +277,7 @@ async def attachment(message: types.Message):
chatGPT_response = False
if audioMessage and user_data["options"]["whisper_to_chat"]:
chatGPT_response = await messageGPT(transcript['text'], str(chat_id), message.from_user.full_name)
chatGPT_response, user_data = await messageGPT(transcript['text'], str(chat_id), message.from_user.full_name, user_data)
transcript['text'] = "> " + transcript['text'] + "\n\n" + chatGPT_response
await message.reply(transcript['text'])
@ -332,14 +331,14 @@ async def settings_callback(callback_query: types.CallbackQuery):
@dp.message_handler(lambda message: message.chat.type == types.ChatType.PRIVATE and not message.text.startswith("/"), content_types=['text'])
async def chat(message: types.Message):
chat_id = str(message.chat.id)
user_data = await getUserData(chat_id)
user_prompt = message.text
await bot.send_chat_action(chat_id, action=types.ChatActions.TYPING)
assistant_message = await messageGPT(user_prompt, chat_id, message.from_user.full_name)
assistant_message, user_data = await messageGPT(user_prompt, chat_id, message.from_user.full_name, user_data)
await message.reply(assistant_message, parse_mode=ParseMode.MARKDOWN)
user_data = await getUserData(chat_id)
if user_data["options"]["assistant_voice_chat"]:
await bot.send_chat_action(chat_id, action=types.ChatActions.TYPING)
voice_data = await text_to_voice(assistant_message)