From 8858f432b506478d821c3ad30e956aeb9e824e77 Mon Sep 17 00:00:00 2001 From: Bruce Date: Wed, 27 Aug 2025 18:09:30 +0800 Subject: [PATCH] fix dingtalk message sender id & update dingtalk streaming card without content (#1630) --- pkg/platform/sources/dingtalk.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/platform/sources/dingtalk.py b/pkg/platform/sources/dingtalk.py index 71c7b0d0..77b467d5 100644 --- a/pkg/platform/sources/dingtalk.py +++ b/pkg/platform/sources/dingtalk.py @@ -23,6 +23,9 @@ class DingTalkMessageConverter(adapter.MessageConverter): at = True if type(msg) is platform_message.Plain: content += msg.text + if type(msg) is platform_message.Forward: + for node in msg.node_list: + content += (await DingTalkMessageConverter.yiri2target(node.message_chain))[0] return content, at @staticmethod @@ -61,7 +64,7 @@ class DingTalkEventConverter(adapter.EventConverter): if event.conversation == 'FriendMessage': return platform_events.FriendMessage( sender=platform_entities.Friend( - id=event.incoming_message.sender_id, + id=event.incoming_message.sender_staff_id, nickname=event.incoming_message.sender_nick, remark='', ), @@ -71,7 +74,7 @@ class DingTalkEventConverter(adapter.EventConverter): ) elif event.conversation == 'GroupMessage': sender = platform_entities.GroupMember( - id=event.incoming_message.sender_id, + id=event.incoming_message.sender_staff_id, member_name=event.incoming_message.sender_nick, permission='MEMBER', group=platform_entities.Group( @@ -166,8 +169,11 @@ class DingTalkAdapter(adapter.MessagePlatformAdapter): content, at = await DingTalkMessageConverter.yiri2target(message) card_instance, card_instance_id = self.card_instance_id_dict[message_id] + if not content and bot_message.content: + content = bot_message.content # 兼容直接传入content的情况 # print(card_instance_id) - await self.bot.send_card_message(card_instance, card_instance_id, content, is_final) + if content: + await self.bot.send_card_message(card_instance, card_instance_id, content, is_final) if is_final and bot_message.tool_calls is None: # self.seq = 1 # 消息回复结束之后重置seq self.card_instance_id_dict.pop(message_id) # 消息回复结束之后删除卡片实例id