From ba1b68df20e0ebb88253f8eeb96f5a8da441d8c7 Mon Sep 17 00:00:00 2001 From: Zhalslar Date: Sat, 14 Jun 2025 21:23:45 +0800 Subject: [PATCH 1/3] Update dingtalk_event.py --- .../sources/dingtalk/dingtalk_event.py | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py index 4834032f5..f9292ede9 100644 --- a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +++ b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py @@ -31,21 +31,23 @@ class DingtalkMessageEvent(AstrMessageEvent): self.message_obj.raw_message, ) elif isinstance(segment, Comp.Image): + file = segment.file markdown_str = "" - if segment.file and segment.file.startswith("file:///"): - logger.warning( - "dingtalk only support url image, not: " + segment.file - ) - continue - elif segment.file and segment.file.startswith("http"): - markdown_str += f"![image]({segment.file})\n\n" - elif segment.file and segment.file.startswith("base64://"): - logger.warning("dingtalk only support url image, not base64") - continue - else: - logger.warning( - "dingtalk only support url image, not: " + segment.file - ) + + try: + if not file: + logger.warning("钉钉图片 segment 缺少 file 字段,跳过") + continue + + if file.startswith("http"): + markdown_str += f"![image]({file})\n\n" + else: + url = await segment.register_to_file_service() + markdown_str += f"![image]({url})\n\n" + + except Exception as e: + logger.error(f"钉钉图片处理失败: {e}") + logger.warning(f"跳过图片发送: {file}") continue ret = await asyncio.get_event_loop().run_in_executor( From 2059ddcadfa47eccda759822e8f8001ebed7a584 Mon Sep 17 00:00:00 2001 From: Zhalslar Date: Sat, 14 Jun 2025 21:39:33 +0800 Subject: [PATCH 2/3] Update dingtalk_event.py --- .../core/platform/sources/dingtalk/dingtalk_event.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py index f9292ede9..37b12ba4f 100644 --- a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +++ b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py @@ -31,23 +31,23 @@ class DingtalkMessageEvent(AstrMessageEvent): self.message_obj.raw_message, ) elif isinstance(segment, Comp.Image): - file = segment.file + file_ = segment.file markdown_str = "" try: - if not file: + if not file_: logger.warning("钉钉图片 segment 缺少 file 字段,跳过") continue - if file.startswith("http"): - markdown_str += f"![image]({file})\n\n" + if file_.startswith("http://", "https://"): + markdown_str += f"![image]({file_})\n\n" else: url = await segment.register_to_file_service() markdown_str += f"![image]({url})\n\n" except Exception as e: logger.error(f"钉钉图片处理失败: {e}") - logger.warning(f"跳过图片发送: {file}") + logger.warning(f"跳过图片发送: {file_}") continue ret = await asyncio.get_event_loop().run_in_executor( From c7891385ca4f238df4bdc8833bb7055c31c5c577 Mon Sep 17 00:00:00 2001 From: Zhalslar Date: Sat, 14 Jun 2025 21:44:37 +0800 Subject: [PATCH 3/3] Update dingtalk_event.py --- .../sources/dingtalk/dingtalk_event.py | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py index 37b12ba4f..c2188dc36 100644 --- a/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +++ b/astrbot/core/platform/sources/dingtalk/dingtalk_event.py @@ -31,34 +31,32 @@ class DingtalkMessageEvent(AstrMessageEvent): self.message_obj.raw_message, ) elif isinstance(segment, Comp.Image): - file_ = segment.file markdown_str = "" try: - if not file_: + if not segment.file: logger.warning("钉钉图片 segment 缺少 file 字段,跳过") continue - - if file_.startswith("http://", "https://"): - markdown_str += f"![image]({file_})\n\n" + if segment.file.startswith(("http://", "https://")): + image_url = segment.file else: - url = await segment.register_to_file_service() - markdown_str += f"![image]({url})\n\n" + image_url = await segment.register_to_file_service() + + markdown_str = f"![image]({image_url})\n\n" + + ret = await asyncio.get_event_loop().run_in_executor( + None, + client.reply_markdown, + "😄", + markdown_str, + self.message_obj.raw_message, + ) + logger.debug(f"send image: {ret}") except Exception as e: logger.error(f"钉钉图片处理失败: {e}") - logger.warning(f"跳过图片发送: {file_}") + logger.warning(f"跳过图片发送: {image_path}") continue - - ret = await asyncio.get_event_loop().run_in_executor( - None, - client.reply_markdown, - "😄", - markdown_str, - self.message_obj.raw_message, - ) - logger.debug(f"send image: {ret}") - async def send(self, message: MessageChain): await self.send_with_client(self.client, message) await super().send(message)