fix(discord): 修复 WebSocket 连接检测并增强跨平台文件处理 (#73)
修复 Discord WebSocket 连接检测逻辑,使用正确的属性检查连接状态 为跨平台消息处理添加文件类型支持,并增加详细的调试日志 优化附件处理逻辑,确保所有文件类型都能正确识别和转发
This commit is contained in:
@@ -244,6 +244,7 @@ async def format_discord_to_qq_content(
|
||||
attachments: List[dict] = None
|
||||
) -> tuple[str, List[dict]]:
|
||||
"""将 Discord 消息格式化为 QQ 消息格式"""
|
||||
logger.debug(f"[CrossPlatform] format_discord_to_qq_content: username={discord_username}, content='{content}', attachments={attachments}")
|
||||
platform_info = get_platform_info("discord", channel_id)
|
||||
|
||||
message_header = f"{discord_username}:"
|
||||
@@ -256,6 +257,7 @@ async def format_discord_to_qq_content(
|
||||
|
||||
processed_attachments = []
|
||||
if attachments:
|
||||
logger.debug(f"[CrossPlatform] 处理附件: {attachments}")
|
||||
for att in attachments:
|
||||
if isinstance(att, dict):
|
||||
url = att.get("url", "")
|
||||
@@ -268,15 +270,24 @@ async def format_discord_to_qq_content(
|
||||
processed_attachments.append({"type": "record", "url": url})
|
||||
elif att_type == "video" or filename.endswith(('.mp4', '.avi', '.mkv', '.mov', '.flv', '.wmv')):
|
||||
processed_attachments.append({"type": "video", "url": url})
|
||||
else:
|
||||
processed_attachments.append({"type": "file", "url": url, "filename": filename})
|
||||
logger.debug(f"[CrossPlatform] Discord 消息格式化: 识别为文件 {filename}")
|
||||
else:
|
||||
url = str(att)
|
||||
logger.debug(f"[CrossPlatform] 处理非字典附件: {url}")
|
||||
if url.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp')):
|
||||
processed_attachments.append({"type": "image", "url": url})
|
||||
elif url.lower().endswith(('.amr', '.silk', '.mp3', '.wav', '.ogg', '.m4a')):
|
||||
processed_attachments.append({"type": "record", "url": url})
|
||||
elif url.lower().endswith(('.mp4', '.avi', '.mkv', '.mov', '.flv', '.wmv')):
|
||||
processed_attachments.append({"type": "video", "url": url})
|
||||
else:
|
||||
filename = os.path.basename(url.split('?')[0]) or "file"
|
||||
processed_attachments.append({"type": "file", "url": url, "filename": filename})
|
||||
logger.debug(f"[CrossPlatform] Discord 消息格式化: 通过扩展名识别为文件 {filename}")
|
||||
|
||||
logger.debug(f"[CrossPlatform] format_discord_to_qq_content 完成: full_message='{full_message}', processed_attachments={processed_attachments}")
|
||||
return full_message, processed_attachments
|
||||
|
||||
async def format_qq_to_discord_content(
|
||||
|
||||
Reference in New Issue
Block a user