调整dify内容

This commit is contained in:
liuwei
2025-05-29 11:38:14 +08:00
parent 217b06d58d
commit e98fa231fe

View File

@@ -18,6 +18,10 @@ from utils.media_downloader import MediaDownloader
from utils.string_utils import remove_trailing_content
from wechat_ipad import WechatAPIClient
# 常见的图片和视频文件扩展名
IMAGE_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'}
VIDEO_EXTENSIONS = {'.mp4', '.avi', '.mov', '.wmv', '.flv', '.mkv', '.webm'}
class DifyPlugin(MessagePluginInterface):
"""Dify AI聊天插件"""
@@ -151,7 +155,13 @@ class DifyPlugin(MessagePluginInterface):
# 判断是否为本地文件路径
if os.path.isfile(response):
# 如果是文件路径,使用发送文件方法
await bot.send_image_message((roomid if roomid else sender), Path(response))
file_type = self.check_file_type(response)
if file_type == 1:
await bot.send_image_message((roomid if roomid else sender), Path(response))
elif file_type == 2:
await bot.send_video_message((roomid if roomid else sender), Path(response))
else:
return False, "获取媒资失败"
else:
# 如果是普通文本则在长度大于100字时转为图片发送
if len(response) > 800:
@@ -218,7 +228,14 @@ class DifyPlugin(MessagePluginInterface):
# 判断是否为本地文件路径
if os.path.isfile(response):
# 如果是文件路径,使用发送文件方法
await bot.send_image_message((roomid if roomid else sender), Path(response))
# 判断是视频还是图片:
file_type = self.check_file_type(response)
if file_type == 1:
await bot.send_image_message((roomid if roomid else sender), Path(response))
elif file_type == 2:
await bot.send_video_message((roomid if roomid else sender), Path(response))
else:
return False, "获取媒资失败"
else:
# 如果是普通文本则在长度大于100字时转为图片发送
if len(response) > 800:
@@ -453,3 +470,19 @@ class DifyPlugin(MessagePluginInterface):
"""重置所有会话上下文"""
self.conversations.clear()
self.last_activity.clear()
def check_file_type(self, file_path) -> int:
if os.path.isfile(file_path):
# 获取文件扩展名并转换为小写
file_extension = os.path.splitext(file_path)[1].lower()
if file_extension in IMAGE_EXTENSIONS:
return 1
# 在此处添加发送图片的逻辑
elif file_extension in VIDEO_EXTENSIONS:
return 2
# 在此处添加发送视频的逻辑
else:
return 0
else:
return 0