Merge pull request #18 from F4ria/gemini-error-content-extraction

feat: extracting gemini's reply text from the exception if available
This commit is contained in:
yihong 2023-12-28 12:56:15 +08:00 committed by GitHub
commit e753b6ea26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,6 +3,7 @@ from pathlib import Path
import re
import google.generativeai as genai
from google.generativeai.types.generation_types import StopCandidateException
from telebot import TeleBot
from telebot.types import Message
@ -161,8 +162,23 @@ def gemini_handler(message: Message, bot: TeleBot) -> None:
# keep the last 5, every has two ask and answer.
if len(player.history) > 10:
player.history = player.history[2:]
player.send_message(m)
gemini_reply_text = player.last.text.strip()
try:
player.send_message(m)
gemini_reply_text = player.last.text.strip()
except StopCandidateException as e:
match = re.search(r'content\s*{\s*parts\s*{\s*text:\s*"([^"]+)"', str(e))
if match:
gemini_reply_text = match.group(1)
gemini_reply_text = re.sub(r"\\n", "\n", gemini_reply_text)
else:
print("No meaningful text was extracted from the exception.")
bot.reply_to(
message,
"Google gemini encountered an error while generating an answer. Please check the log.",
)
return
try:
bot.reply_to(
message,