chore: sync current WechatHookBot workspace

This commit is contained in:
2026-03-09 15:48:45 +08:00
parent 4016c1e6eb
commit 9119e2307d
195 changed files with 24438 additions and 17498 deletions

View File

@@ -1,33 +1,35 @@
"""
消息发送钩子工具
用于自动记录机器人发送的消息到 MessageLogger
"""
"""
消息发送钩子工具
用于自动记录机器人发送的消息到 MessageLogger
"""
from loguru import logger
from utils.config_manager import get_config
async def log_bot_message(to_wxid: str, content: str, msg_type: str = "text", media_url: str = ""):
"""
记录机器人发送的消息到 MessageLogger
Args:
to_wxid: 接收者微信ID
content: 消息内容
msg_type: 消息类型 (text/image/video/file等)
media_url: 媒体文件URL (可选)
"""
"""
记录机器人发送的消息到 MessageLogger
Args:
to_wxid: 接收者微信ID
content: 消息内容
msg_type: 消息类型 (text/image/video/file等)
media_url: 媒体文件URL (可选)
"""
try:
logger.info(f"message_hook: 开始记录机器人消息")
# 动态导入避免循环依赖
from plugins.MessageLogger.main import MessageLogger
logger.info(f"message_hook: MessageLogger 导入成功")
# 获取 MessageLogger 实例
message_logger = MessageLogger.get_instance()
logger.info(f"message_hook: MessageLogger 实例: {message_logger}")
# 获取 MessageLogger 实例
message_logger = MessageLogger.get_instance()
logger.info(f"message_hook: MessageLogger 实例: {message_logger}")
if message_logger:
logger.info(f"message_hook: 调用 save_bot_message")
await message_logger.save_bot_message(to_wxid, content, msg_type, media_url)
@@ -48,11 +50,9 @@ async def log_bot_message(to_wxid: str, content: str, msg_type: str = "text", me
bot_nickname = "机器人"
bot_wxid = ""
try:
import tomllib
with open("main_config.toml", "rb") as f:
main_config = tomllib.load(f)
bot_nickname = main_config.get("Bot", {}).get("nickname") or bot_nickname
bot_wxid = main_config.get("Bot", {}).get("wxid") or ""
bot_config = get_config().get_section("Bot")
bot_nickname = bot_config.get("nickname") or bot_nickname
bot_wxid = bot_config.get("wxid") or ""
except Exception:
pass
@@ -78,50 +78,50 @@ async def log_bot_message(to_wxid: str, content: str, msg_type: str = "text", me
logger.error(f"记录机器人消息失败: {e}")
import traceback
logger.error(f"详细错误: {traceback.format_exc()}")
def create_message_hook(original_method):
"""
创建消息发送钩子装饰器
Args:
original_method: 原始的发送消息方法
Returns:
包装后的方法
"""
async def wrapper(self, to_wxid: str, content: str, *args, **kwargs):
# 调用原始方法
result = await original_method(self, to_wxid, content, *args, **kwargs)
# 记录消息
await log_bot_message(to_wxid, content, "text")
return result
return wrapper
def create_file_message_hook(original_method, msg_type: str):
"""
创建文件消息发送钩子装饰器
Args:
original_method: 原始的发送文件方法
msg_type: 消息类型
Returns:
包装后的方法
"""
async def wrapper(self, to_wxid: str, file_path: str, *args, **kwargs):
# 调用原始方法
result = await original_method(self, to_wxid, file_path, *args, **kwargs)
# 记录消息
import os
filename = os.path.basename(file_path)
await log_bot_message(to_wxid, f"[{msg_type}] {filename}", msg_type, file_path)
return result
def create_message_hook(original_method):
"""
创建消息发送钩子装饰器
Args:
original_method: 原始的发送消息方法
Returns:
包装后的方法
"""
async def wrapper(self, to_wxid: str, content: str, *args, **kwargs):
# 调用原始方法
result = await original_method(self, to_wxid, content, *args, **kwargs)
# 记录消息
await log_bot_message(to_wxid, content, "text")
return result
return wrapper
def create_file_message_hook(original_method, msg_type: str):
"""
创建文件消息发送钩子装饰器
Args:
original_method: 原始的发送文件方法
msg_type: 消息类型
Returns:
包装后的方法
"""
async def wrapper(self, to_wxid: str, file_path: str, *args, **kwargs):
# 调用原始方法
result = await original_method(self, to_wxid, file_path, *args, **kwargs)
# 记录消息
import os
filename = os.path.basename(file_path)
await log_bot_message(to_wxid, f"[{msg_type}] {filename}", msg_type, file_path)
return result
return wrapper