|
|
@@ -15,6 +15,7 @@ from config import conf, pconf
|
|
|
import threading
|
|
|
from common import memory, utils
|
|
|
import base64
|
|
|
+import os
|
|
|
|
|
|
class LinkAIBot(Bot):
|
|
|
# authentication failed
|
|
|
@@ -389,6 +390,11 @@ class LinkAIBot(Bot):
|
|
|
for url in image_urls:
|
|
|
if url.endswith(".mp4"):
|
|
|
reply_type = ReplyType.VIDEO_URL
|
|
|
+ elif url.endswith(".pdf") or url.endswith(".doc") or url.endswith(".docx"):
|
|
|
+ reply_type = ReplyType.FILE
|
|
|
+ url = _download_file(url)
|
|
|
+ if not url:
|
|
|
+ continue
|
|
|
else:
|
|
|
reply_type = ReplyType.IMAGE_URL
|
|
|
reply = Reply(reply_type, url)
|
|
|
@@ -396,6 +402,22 @@ class LinkAIBot(Bot):
|
|
|
except Exception as e:
|
|
|
logger.error(e)
|
|
|
|
|
|
+
|
|
|
+def _download_file(url: str):
|
|
|
+ try:
|
|
|
+ file_path = "tmp"
|
|
|
+ if not os.path.exists(file_path):
|
|
|
+ os.makedirs(file_path)
|
|
|
+ file_name = url.split("/")[-1] # 获取文件名
|
|
|
+ file_path = os.path.join(file_path, file_name)
|
|
|
+ response = requests.get(url)
|
|
|
+ with open(file_path, "wb") as f:
|
|
|
+ f.write(response.content)
|
|
|
+ return file_path
|
|
|
+ except Exception as e:
|
|
|
+ logger.warn(e)
|
|
|
+
|
|
|
+
|
|
|
class LinkAISessionManager(SessionManager):
|
|
|
def session_msg_query(self, query, session_id):
|
|
|
session = self.build_session(session_id)
|