kopia lustrzana https://codeberg.org/pluja/openai-telegram-bot
Fix data race with messageGPT
rodzic
e701b77037
commit
ca760f0d33
11
main.py
11
main.py
|
@ -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)
|
||||
|
|
Ładowanie…
Reference in New Issue