Commit 96fe8f3
Changed files (2)
src
ai
texts
messages
src/ai/texts/contexts.py
@@ -88,7 +88,11 @@ async def single_openai_chat_context(client: Client, message: Message) -> dict:
clean_texts = clean_context(info["html"] or info["text"]) if role == "user" and info["entity_urls"] else clean_context(info["text"])
if not clean_texts:
continue
- texts = f"[username]: {sender}\n[message]:\n{clean_texts}" if role == "user" and sender else clean_texts
+ if role == "user" and sender: # noqa: SIM108
+ texts = f"<quote>{info['quote_text']}</quote>\n[username]: {sender}\n[message]:\n{clean_texts}"
+ else:
+ texts = f"<quote>{info['quote_text']}</quote>\n{clean_texts}"
+ texts = texts.removeprefix("<quote></quote>\n") # remove quote mark if no quote_text
contexts.append({"type": "text", "text": texts})
except Exception as e:
logger.warning(f"Download media from message failed: {e}")
@@ -199,7 +203,11 @@ async def single_openai_response_context(client: Client, message: Message, opena
clean_texts = clean_context(info["html"] or info["text"]) if role == "user" and info["entity_urls"] else clean_context(info["text"])
if not clean_texts:
continue
- texts = f"[username]: {sender}\n[message]:\n{clean_texts}" if role == "user" and sender else clean_texts
+ if role == "user" and sender: # noqa: SIM108
+ texts = f"<quote>{info['quote_text']}</quote>\n[username]: {sender}\n[message]:\n{clean_texts}"
+ else:
+ texts = f"<quote>{info['quote_text']}</quote>\n{clean_texts}"
+ texts = texts.removeprefix("<quote></quote>\n") # remove quote mark if no quote_text
contexts.append({"type": "input_text", "text": texts})
except Exception as e:
logger.warning(f"Download media from message failed: {e}")
@@ -327,7 +335,11 @@ async def get_gemini_contexts(client: Client, message: Message, gemini: genai.Cl
clean_texts = clean_context(info["text"])
if not clean_texts:
continue
- texts = f"[username]: {sender}\n[message]:\n{clean_texts}" if role == "user" and sender else clean_texts
+ if role == "user" and sender: # noqa: SIM108
+ texts = f"<quote>{info['quote_text']}</quote>\n[username]: {sender}\n[message]:\n{clean_texts}"
+ else:
+ texts = f"<quote>{info['quote_text']}</quote>\n{clean_texts}"
+ texts = texts.removeprefix("<quote></quote>\n") # remove quote mark if no quote_text
parts.append(Part.from_text(text=texts))
except Exception as e:
logger.warning(f"Download media from message failed: {e}")
src/messages/parser.py
@@ -109,6 +109,7 @@ def parse_msg(message: Message, *, silent: bool = False, verbose: bool = False,
"media_group_id": int(media_group_id),
"is_bot": bool(is_bot),
"text": str(text),
+ "quote_text": glom(message, "quote.text", default="") or "",
"html": getattr(text, "html", ""),
"full_name": str(full_name),
"handle": str(handle),