Commit 2fcca6a

benny-dou <60535774+benny-dou@users.noreply.github.com>
2025-02-25 16:37:02
fix(gpt): fix `base64_media` function
1 parent a4fdab1
Changed files (1)
src
src/llm/contexts.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 import base64
+import contextlib
 import re
 from pathlib import Path
 from typing import TYPE_CHECKING
@@ -125,8 +126,18 @@ async def single_context(client: Client, message: Message) -> dict:
 async def base64_media(client: Client, message: Message) -> dict:
     data: BytesIO = await client.download_media(message, in_memory=True)  # type: ignore
     logger.debug(f"Downloaded message media: {data.name}")
+
+    ext = Path(data.name).suffix.removeprefix(".").replace("jpg", "jpeg")
+
+    # image, video
+    b64_encoding = base64.b64encode(data.getvalue()).decode("utf-8")
+
+    # text document
+    value = ""
+    with contextlib.suppress(Exception):
+        value = data.getvalue().decode("utf-8")
     return {
-        "ext": Path(data.name).suffix.removeprefix(".").replace("jpg", "jpeg"),
-        "value": data.getvalue().decode("utf-8"),
-        "base64": base64.b64encode(data.getvalue()).decode("utf-8"),
+        "ext": ext,
+        "base64": b64_encoding,
+        "value": value,
     }