855 协议版本-调整完毕内容

This commit is contained in:
liuwei
2025-04-30 13:22:33 +08:00
parent 869bce8a18
commit 454d084715
88 changed files with 1565 additions and 7816 deletions

View File

@@ -6,6 +6,7 @@ import time
import re # 添加re模块导入
from typing import Dict, Any, List, Optional, Tuple
from loguru import logger
from message_util import MessageUtil
from plugin_common.message_plugin_interface import MessagePluginInterface
@@ -15,6 +16,7 @@ from utils.robot_cmd.robot_command import Feature, PermissionStatus, GroupBotMan
from utils.decorator.points_decorator import plugin_points_cost
from utils.media_downloader import MediaDownloader
from utils.string_utils import remove_trailing_content
from wechat_ipad import WechatAPIClient
class DifyPlugin(MessagePluginInterface):
@@ -58,7 +60,6 @@ class DifyPlugin(MessagePluginInterface):
def initialize(self, context: Dict[str, Any]) -> bool:
"""初始化插件"""
self.LOG = logging.getLogger(f"Plugin.{self.name}")
self.LOG.info(f"正在初始化 {self.name} 插件...")
# 保存上下文对象
@@ -114,7 +115,7 @@ class DifyPlugin(MessagePluginInterface):
@plugin_stats_decorator(plugin_name="Dify聊天")
@plugin_points_cost(2, "AI聊天消耗积分", Feature.AI_CAPABILITY)
def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
async def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]:
"""处理消息"""
content = str(message.get("content", "")).strip()
self.LOG.info(f"插件执行: {self.name}{content}")
@@ -122,6 +123,7 @@ class DifyPlugin(MessagePluginInterface):
roomid = message.get("roomid", "")
gbm: GroupBotManager = message.get("gbm")
bot: WechatAPIClient = message.get("bot")
# 处理被@的消息
if message.get("is_at", False) and roomid:
# 检查权限
@@ -132,14 +134,14 @@ class DifyPlugin(MessagePluginInterface):
query = re.sub(r"@.*?[\u2005|\s]", "", content).strip()
if not query:
self.message_util.send_text("请在@我的同时提供问题内容", roomid, sender)
await bot.send_text_message(roomid, "请在@我的同时提供问题内容", sender)
return False, "没有提供问题内容"
# self.message_util.send_text_msg("⏳AI 正在加油,请稍候… 😊", roomid, sender)
try:
# 调用Dify API获取回复
response = self._chat_with_dify(roomid, sender, query)
response = self._chat_with_dify((roomid if roomid else sender), sender, query)
# 去除广告内容
response = remove_trailing_content(response)
@@ -151,15 +153,15 @@ class DifyPlugin(MessagePluginInterface):
self.message_util.send_file(response, roomid)
else:
# 如果是普通文本,使用发送文本方法
self.message_util.send_text(response, roomid, sender)
await bot.send_text_message((roomid if roomid else sender), response, sender)
return True, "发送成功"
else:
self.message_util.send_text("❌未能获取到回复,请稍后再试", roomid, sender)
await bot.send_text_message((roomid if roomid else sender), "❌未能获取到回复,请稍后再试", sender)
return False, "未获取到回复"
except Exception as e:
self.LOG.error(f"处理Dify聊天请求出错: {e}")
self.message_util.send_text(f"❌请求出错:{str(e)}", roomid, sender)
await bot.send_text_message((roomid if roomid else sender), "❌未能获取到回复,请稍后再试", sender)
return False, f"处理出错: {e}"
# 原有的命令处理逻辑
@@ -168,8 +170,7 @@ class DifyPlugin(MessagePluginInterface):
# 检查命令格式
if len(parts) < 2 or not parts[1].strip():
self.message_util.send_text(f"{self.command_format}",
(roomid if roomid else sender), sender)
await bot.send_text_message((roomid if roomid else sender), f"{self.command_format}", sender)
return False, "命令格式错误"
# 检查权限
@@ -199,16 +200,17 @@ class DifyPlugin(MessagePluginInterface):
self.message_util.send_file(response, (roomid if roomid else sender))
else:
# 如果是普通文本,使用发送文本方法
self.message_util.send_text(response, (roomid if roomid else sender), sender if roomid else "")
await bot.send_text_message((roomid if roomid else sender), response,
sender if roomid else "")
return True, "发送成功"
else:
self.message_util.send_text("❌未能获取到回复,请稍后再试", (roomid if roomid else sender),
await bot.send_text_message((roomid if roomid else sender), "❌未能获取到回复,请稍后再试",
sender if roomid else "")
return False, "未获取到回复"
except Exception as e:
self.LOG.error(f"处理Dify聊天请求出错: {e}")
self.message_util.send_text(f"❌请求出错:{str(e)}", (roomid if roomid else sender),
await bot.send_text_message((roomid if roomid else sender), f"❌请求出错:{str(e)}",
sender if roomid else "")
return False, f"处理出错: {e}"