diff --git a/bot/bot.py b/bot/bot.py
index 2d9a758af..033639774 100644
--- a/bot/bot.py
+++ b/bot/bot.py
@@ -429,7 +429,7 @@ async def fake_gen():
                 prev_answer = answer
             
             # update user data
-            new_dialog_message = {"user": _message, "bot": answer, "date": datetime.now()}
+            new_dialog_message = {"user": [{"type": "text", "text": _message}], "bot": answer, "date": datetime.now()}
 
             db.set_dialog_messages(
                 user_id,
diff --git a/bot/openai_utils.py b/bot/openai_utils.py
index cf19257e7..f45194ab6 100644
--- a/bot/openai_utils.py
+++ b/bot/openai_utils.py
@@ -254,25 +254,23 @@ def _generate_prompt_messages(self, message, dialog_messages, chat_mode, image_b
         prompt = config.chat_modes[chat_mode]["prompt_start"]
 
         messages = [{"role": "system", "content": prompt}]
-        user_messages = {"role": "user", "content": []}
         
         for dialog_message in dialog_messages:
-            user_messages["content"].extend(dialog_message["user"])
+            messages.append({"role": "user", "content": dialog_message["user"]})
             messages.append({"role": "assistant", "content": dialog_message["bot"]})
             
 
-        user_messages["content"].append({"type": "text", "text": message})
+        messages.append({"role": "user", "content": [{"type": "text", "text": message}]})
 
         if image_buffer is not None:
-            user_messages["content"].append(
+            messages[-1]["content"].append(
                 {
                     "type": "image",
                     "image": self._encode_image(image_buffer),
                 }
             )
 
-        response = messages + ([user_messages] if len(user_messages["content"]) > 0 else [])
-        return response
+        return messages
 
     def _postprocess_answer(self, answer):
         answer = answer.strip()