Update main.py
Browse files
main.py
CHANGED
|
@@ -84,13 +84,40 @@ def handle_image_message(event):
|
|
| 84 |
user_id = event.source.user_id
|
| 85 |
chat = chat_sessions.get(user_id) or model.start_chat(history=[])
|
| 86 |
chat_sessions[user_id] = chat
|
|
|
|
| 87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
# ========
|
| 89 |
# 生成圖片
|
| 90 |
# ========
|
| 91 |
-
user_text
|
| 92 |
-
image_url = None
|
| 93 |
-
if user_text and user_text.startswith("生成圖片"):
|
| 94 |
prompt = user_text.replace("生成圖片", "").strip()
|
| 95 |
|
| 96 |
# 先立即回覆避免token過期
|
|
@@ -122,49 +149,22 @@ def handle_image_message(event):
|
|
| 122 |
TextSendMessage(text="⚠️ 圖片生成失敗,請稍後再試~")
|
| 123 |
)
|
| 124 |
return
|
| 125 |
-
|
| 126 |
-
# ========
|
| 127 |
-
# 上傳圖片
|
| 128 |
-
# ========
|
| 129 |
-
if event.message.type == "image":
|
| 130 |
-
image_path = get_image_url(event.message.id)
|
| 131 |
-
if image_path:
|
| 132 |
-
store_user_message(user_id, "image", image_path)
|
| 133 |
-
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="圖片已接收成功囉,幫我輸入你想詢問的問題喔~"))
|
| 134 |
-
else:
|
| 135 |
-
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="沒有接收到圖片~"))
|
| 136 |
-
return
|
| 137 |
-
|
| 138 |
-
previous_message = get_previous_message(user_id)
|
| 139 |
-
if previous_message and previous_message["type"] == "image" and event.message.type == "text":
|
| 140 |
-
image_path = previous_message["content"]
|
| 141 |
-
user_text = event.message.text
|
| 142 |
-
store_user_message(user_id, "text", user_text)
|
| 143 |
-
try:
|
| 144 |
-
if not os.path.exists(image_path):
|
| 145 |
-
raise FileNotFoundError(f"圖片路徑無效:{image_path}")
|
| 146 |
-
organ = PIL.Image.open(image_path)
|
| 147 |
-
completion = chat.send_message([user_text, organ])
|
| 148 |
-
out = completion.text
|
| 149 |
-
except Exception as e:
|
| 150 |
-
out = f"發生錯誤: {e}"
|
| 151 |
|
| 152 |
# ========
|
| 153 |
# 純文字
|
| 154 |
# ========
|
| 155 |
-
|
| 156 |
-
if event.message.type != "text":
|
| 157 |
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="請輸入文字或圖片~"))
|
| 158 |
return
|
| 159 |
-
|
| 160 |
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="Bye!"))
|
| 161 |
return
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
except:
|
| 169 |
out = "執行出錯!請換個說法!"
|
| 170 |
|
|
|
|
| 84 |
user_id = event.source.user_id
|
| 85 |
chat = chat_sessions.get(user_id) or model.start_chat(history=[])
|
| 86 |
chat_sessions[user_id] = chat
|
| 87 |
+
previous_message = get_previous_message(user_id)
|
| 88 |
|
| 89 |
+
user_text = event.message.text if event.message.type == "text" else None
|
| 90 |
+
image_url = None
|
| 91 |
+
|
| 92 |
+
if previous_message and previous_message["type"] == "image" and event.message.type == "text":
|
| 93 |
+
image_path = previous_message["content"]
|
| 94 |
+
user_text = event.message.text
|
| 95 |
+
store_user_message(user_id, "text", user_text)
|
| 96 |
+
try:
|
| 97 |
+
if not os.path.exists(image_path):
|
| 98 |
+
raise FileNotFoundError(f"圖片路徑無效:{image_path}")
|
| 99 |
+
previous_img = PIL.Image.open(image_path)
|
| 100 |
+
completion = chat.send_message([user_text, previous_img])
|
| 101 |
+
out = completion.text
|
| 102 |
+
except Exception as e:
|
| 103 |
+
out = f"發生錯誤: {e}"
|
| 104 |
+
|
| 105 |
+
# ========
|
| 106 |
+
# 上傳圖片
|
| 107 |
+
# ========
|
| 108 |
+
elif event.message.type == "image":
|
| 109 |
+
image_path = get_image_url(event.message.id)
|
| 110 |
+
if image_path:
|
| 111 |
+
store_user_message(user_id, "image", image_path)
|
| 112 |
+
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="圖片已接收成功囉,幫我輸入你想詢問的問題喔~"))
|
| 113 |
+
else:
|
| 114 |
+
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="沒有接收到圖片~"))
|
| 115 |
+
return
|
| 116 |
+
|
| 117 |
# ========
|
| 118 |
# 生成圖片
|
| 119 |
# ========
|
| 120 |
+
elif user_text and user_text.startswith("生成圖片"):
|
|
|
|
|
|
|
| 121 |
prompt = user_text.replace("生成圖片", "").strip()
|
| 122 |
|
| 123 |
# 先立即回覆避免token過期
|
|
|
|
| 149 |
TextSendMessage(text="⚠️ 圖片生成失敗,請稍後再試~")
|
| 150 |
)
|
| 151 |
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 152 |
|
| 153 |
# ========
|
| 154 |
# 純文字
|
| 155 |
# ========
|
| 156 |
+
elif event.message.type != "text" or event.message.type != "image":
|
|
|
|
| 157 |
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="請輸入文字或圖片~"))
|
| 158 |
return
|
| 159 |
+
elif event.message.text == "再見":
|
| 160 |
line_bot_api.reply_message(event.reply_token, TextSendMessage(text="Bye!"))
|
| 161 |
return
|
| 162 |
+
elif working_status:
|
| 163 |
+
try:
|
| 164 |
+
prompt = event.message.text
|
| 165 |
+
store_user_message(user_id, "text", prompt)
|
| 166 |
+
completion = chat.send_message(prompt)
|
| 167 |
+
out = completion.text if completion.text else "我不太懂什麼意思也~"
|
| 168 |
except:
|
| 169 |
out = "執行出錯!請換個說法!"
|
| 170 |
|