Compare commits
2 Commits
a68fa32e32
...
a0e9bf1b44
Author | SHA1 | Date | |
---|---|---|---|
|
a0e9bf1b44 | ||
|
2d00fa4c0f |
@ -21,13 +21,6 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
def configure_wal(cursor, cache_size=-50000, busy_timeout=5000):
|
def configure_wal(cursor, cache_size=-50000, busy_timeout=5000):
|
||||||
"""
|
|
||||||
配置SQLite WAL选项(线程安全)
|
|
||||||
|
|
||||||
:param cursor: 数据库连接的cursor对象
|
|
||||||
:param cache_size: 页面缓存大小(负数为KB表示)
|
|
||||||
:param busy_timeout: 锁等待超时时间(毫秒)
|
|
||||||
"""
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -29,7 +29,7 @@ def process_message(uid: str, gid: str | None, message: str) -> str:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"error:Plugin {plugin.__class__.__name__} before_load error: {str(e)}")
|
print(f"error:Plugin {plugin.__class__.__name__} before_load error: {str(e)}")
|
||||||
|
|
||||||
# 原始加载逻辑
|
# 消息加载逻辑
|
||||||
if gid is not None:
|
if gid is not None:
|
||||||
ctx.group.messages = ctx.chat_manager.load_group_messages(ctx.group)
|
ctx.group.messages = ctx.chat_manager.load_group_messages(ctx.group)
|
||||||
ctx.user.messages = ctx.chat_manager.load_user_group_messages(user=ctx.user, group=ctx.group)
|
ctx.user.messages = ctx.chat_manager.load_user_group_messages(user=ctx.user, group=ctx.group)
|
||||||
@ -53,7 +53,7 @@ def process_message(uid: str, gid: str | None, message: str) -> str:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"error:Plugin {plugin.__class__.__name__} after_load error: {str(e)}")
|
print(f"error:Plugin {plugin.__class__.__name__} after_load error: {str(e)}")
|
||||||
|
|
||||||
# 原始保存逻辑
|
# 消息保存逻辑
|
||||||
if gid is not None:
|
if gid is not None:
|
||||||
ctx.chat_manager.save_group_message(ctx.group, role="user", content=ctx.raw_message, sender_id=ctx.user.user_id)
|
ctx.chat_manager.save_group_message(ctx.group, role="user", content=ctx.raw_message, sender_id=ctx.user.user_id)
|
||||||
else:
|
else:
|
||||||
|
@ -59,9 +59,12 @@ class User:
|
|||||||
requests.request("POST","{0}/set_input_status".format(self.url), headers=headers, data=payload)
|
requests.request("POST","{0}/set_input_status".format(self.url), headers=headers, data=payload)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
def send_message(self, message):
|
def send_message(self, message):#发送消息
|
||||||
requests.post(url='{0}/send_private_msg'.format(self.url), json={'user_id':self.user_id, 'message':message})
|
requests.post(url='{0}/send_private_msg'.format(self.url), json={'user_id':self.user_id, 'message':message})
|
||||||
self.db.save_private_message(self,role = 'assistant',content=message)#保存发送的消息
|
self.db.save_private_message(self,role = 'assistant',content=message)#保存发送的消息
|
||||||
|
def send_file(self,dir,name):#上传文件
|
||||||
|
requests.post(url='{0}/upload_private_file'.format(self.url), json={'user_id':self.user_id, 'file':dir,"name":name})
|
||||||
|
self.db.save_private_message(self,role = 'assistant',content="发送了名为{name}的文件")
|
||||||
|
|
||||||
class Group:
|
class Group:
|
||||||
def __init__(self, group_id,url = mainurl,user=None,users=None):
|
def __init__(self, group_id,url = mainurl,user=None,users=None):
|
||||||
@ -114,6 +117,10 @@ class Group:
|
|||||||
else:
|
else:
|
||||||
print(f"请求失败,状态码: {response.status_code}")
|
print(f"请求失败,状态码: {response.status_code}")
|
||||||
|
|
||||||
def send_message(self,message):
|
def send_message(self,message):#发送消息
|
||||||
requests.post(url='{0}/send_group_msg'.format(self.url), json={'group_id': self.group_id, 'message': message})
|
requests.post(url='{0}/send_group_msg'.format(self.url), json={'group_id': self.group_id, 'message': message})
|
||||||
self.db.save_group_message(self,'assistant',message, sender_id=0)#保存发送的消息
|
self.db.save_group_message(self,'assistant',message, sender_id=0)#保存发送的消息
|
||||||
|
def upload_file(self,dir,name,id):#上传文件
|
||||||
|
requests.post(url='{0}/upload_group_file'.format(self.url), json={'group_id': self.group_id, 'file': dir , "name": name,"folder_id": id})
|
||||||
|
self.db.save_group_message(self,'assistant',"上传了名为{name}的文件到群文件夹{id}", sender_id=0)#保存发送的消息
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ class PluginManager:
|
|||||||
self.scan_plugins
|
self.scan_plugins
|
||||||
|
|
||||||
def scan_plugins(self):
|
def scan_plugins(self):
|
||||||
"""扫描并加载所有ZIP插件(保持原接口不变)"""
|
"""扫描并加载所有ZIP插件"""
|
||||||
if not os.path.exists(PLUGIN_DIR):
|
if not os.path.exists(PLUGIN_DIR):
|
||||||
os.makedirs(PLUGIN_DIR, exist_ok=True)
|
os.makedirs(PLUGIN_DIR, exist_ok=True)
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ class PluginManager:
|
|||||||
self.load_plugin(str(item))
|
self.load_plugin(str(item))
|
||||||
|
|
||||||
def load_plugin(self, zip_path: str) -> bool:
|
def load_plugin(self, zip_path: str) -> bool:
|
||||||
"""动态加载ZIP格式插件(支持内嵌依赖)"""
|
"""动态加载ZIP格式插件"""
|
||||||
try:
|
try:
|
||||||
# 解压到临时目录(保持原逻辑)
|
# 解压到临时目录(保持原逻辑)
|
||||||
temp_dir = tempfile.mkdtemp(prefix=f"plugin_{Path(zip_path).stem}_")
|
temp_dir = tempfile.mkdtemp(prefix=f"plugin_{Path(zip_path).stem}_")
|
||||||
@ -221,27 +221,6 @@ class PluginManager:
|
|||||||
|
|
||||||
return plugin_registered
|
return plugin_registered
|
||||||
|
|
||||||
def process_message(self, uid: str, gid: Optional[str], message: str) -> str:
|
|
||||||
"""主消息处理入口(保持完全兼容)"""
|
|
||||||
ctx = MessageContext(uid, gid, message)
|
|
||||||
|
|
||||||
# 优先执行新版插件流程
|
|
||||||
for name, plugin_cls in self._plugins.items():
|
|
||||||
try:
|
|
||||||
plugin = plugin_cls(ctx)
|
|
||||||
if result := plugin.process():
|
|
||||||
ctx.response = result
|
|
||||||
ctx.intercepted = True
|
|
||||||
break
|
|
||||||
except Exception as e:
|
|
||||||
print(f"⚠️ 插件错误 {name}: {str(e)}")
|
|
||||||
|
|
||||||
# 如果没有被拦截,运行旧版钩子
|
|
||||||
if not ctx.intercepted:
|
|
||||||
for hook in self._hook_registry.get("on_message", []):
|
|
||||||
hook(ctx)
|
|
||||||
|
|
||||||
return ctx.response or "ok"
|
|
||||||
|
|
||||||
def register_hook(self, hook_name: str):
|
def register_hook(self, hook_name: str):
|
||||||
"""兼容旧版钩子注册(装饰器模式,保持原样)"""
|
"""兼容旧版钩子注册(装饰器模式,保持原样)"""
|
||||||
|
Reference in New Issue
Block a user