refactor(discord-cross): 使用模块专用日志记录器替换全局日志记录器

将各模块中的全局日志记录器替换为模块专用日志记录器,以提供更清晰的日志来源标识
同时在适配器中添加会话状态检查和重连机制,提升消息发送的可靠性
This commit is contained in:
2026-03-21 18:03:26 +08:00
committed by 镀铬酸钾
parent 1c874e6da0
commit 7eb585748d
4 changed files with 98 additions and 14 deletions

View File

@@ -7,7 +7,7 @@
实现原理:
1. 接收 Discord 消息 (`discord.Message`)。
2. 将其“伪装”成 OneBot 的 `GroupMessageEvent` 或 `PrivateMessageEvent`。
2. 将其"伪装"成 OneBot 的 `GroupMessageEvent` 或 `PrivateMessageEvent`。
3. 拦截插件调用的 `event.reply()` 方法。
4. 将插件返回的 OneBot `MessageSegment` 转换为 Discord 格式并发送。
"""
@@ -227,8 +227,9 @@ class DiscordToOneBotConverter:
Returns:
伪装后的 OneBot 事件对象
"""
# 在方法内部导入 logger避免作用域问题
from core.utils.logger import logger
# 在静态方法内部创建模块专用日志记录器
from core.utils.logger import ModuleLogger
mod_logger = ModuleLogger("DiscordConverter")
# 1. 提取基础信息
user_id = discord_message.author.id
@@ -289,36 +290,36 @@ class DiscordToOneBotConverter:
# 添加附件信息
if discord_message.attachments:
logger.debug(f"[DiscordToOneBotConverter] 检测到 {len(discord_message.attachments)} 个附件")
mod_logger.debug(f"[DiscordToOneBotConverter] 检测到 {len(discord_message.attachments)} 个附件")
for attachment in discord_message.attachments:
filename = attachment.filename.lower()
logger.debug(f"[DiscordToOneBotConverter] 处理附件: {attachment.filename}, MIME: {attachment.content_type}")
mod_logger.debug(f"[DiscordToOneBotConverter] 处理附件: {attachment.filename}, MIME: {attachment.content_type}")
# 检查是否是语音文件
if filename.endswith(('.amr', '.silk', '.mp3', '.wav', '.ogg', '.m4a')):
seg = OneBotMessageSegment.record(attachment.url)
seg.data["filename"] = attachment.filename
message_list.append(seg)
raw_message += f"\n[语音: {attachment.filename}]"
logger.debug(f"[DiscordToOneBotConverter] 识别为语音文件: {attachment.filename}")
mod_logger.debug(f"[DiscordToOneBotConverter] 识别为语音文件: {attachment.filename}")
elif filename.endswith(('.mp4', '.avi', '.mkv', '.mov', '.flv', '.wmv')):
seg = OneBotMessageSegment.video(attachment.url)
seg.data["filename"] = attachment.filename
message_list.append(seg)
raw_message += f"\n[视频: {attachment.filename}]"
logger.debug(f"[DiscordToOneBotConverter] 识别为视频文件: {attachment.filename}")
mod_logger.debug(f"[DiscordToOneBotConverter] 识别为视频文件: {attachment.filename}")
elif filename.endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp')):
image_type = "gif" if filename.endswith('.gif') else None
seg = OneBotMessageSegment.image(attachment.url, image_type=image_type)
seg.data["filename"] = attachment.filename
message_list.append(seg)
raw_message += f"\n[图片: {attachment.filename}]"
logger.debug(f"[DiscordToOneBotConverter] 识别为图片文件: {attachment.filename}")
mod_logger.debug(f"[DiscordToOneBotConverter] 识别为图片文件: {attachment.filename}")
else:
seg = OneBotMessageSegment.file(attachment.url)
seg.data["filename"] = attachment.filename
message_list.append(seg)
raw_message += f"\n[文件: {attachment.filename}]"
logger.success(f"[DiscordToOneBotConverter] 识别为普通文件: {attachment.filename}")
mod_logger.success(f"[DiscordToOneBotConverter] 识别为普通文件: {attachment.filename}")
# 添加贴纸 (Stickers) 信息
if hasattr(discord_message, 'stickers') and discord_message.stickers: