fix dingtalk message sender id & update dingtalk streaming card without content (#1630)

This commit is contained in:
Bruce
2025-08-27 18:09:30 +08:00
committed by GitHub
parent 8f5ec48522
commit 8858f432b5
+9 -3
View File
@@ -23,6 +23,9 @@ class DingTalkMessageConverter(adapter.MessageConverter):
at = True at = True
if type(msg) is platform_message.Plain: if type(msg) is platform_message.Plain:
content += msg.text 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 return content, at
@staticmethod @staticmethod
@@ -61,7 +64,7 @@ class DingTalkEventConverter(adapter.EventConverter):
if event.conversation == 'FriendMessage': if event.conversation == 'FriendMessage':
return platform_events.FriendMessage( return platform_events.FriendMessage(
sender=platform_entities.Friend( sender=platform_entities.Friend(
id=event.incoming_message.sender_id, id=event.incoming_message.sender_staff_id,
nickname=event.incoming_message.sender_nick, nickname=event.incoming_message.sender_nick,
remark='', remark='',
), ),
@@ -71,7 +74,7 @@ class DingTalkEventConverter(adapter.EventConverter):
) )
elif event.conversation == 'GroupMessage': elif event.conversation == 'GroupMessage':
sender = platform_entities.GroupMember( sender = platform_entities.GroupMember(
id=event.incoming_message.sender_id, id=event.incoming_message.sender_staff_id,
member_name=event.incoming_message.sender_nick, member_name=event.incoming_message.sender_nick,
permission='MEMBER', permission='MEMBER',
group=platform_entities.Group( group=platform_entities.Group(
@@ -166,8 +169,11 @@ class DingTalkAdapter(adapter.MessagePlatformAdapter):
content, at = await DingTalkMessageConverter.yiri2target(message) content, at = await DingTalkMessageConverter.yiri2target(message)
card_instance, card_instance_id = self.card_instance_id_dict[message_id] 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) # 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: if is_final and bot_message.tool_calls is None:
# self.seq = 1 # 消息回复结束之后重置seq # self.seq = 1 # 消息回复结束之后重置seq
self.card_instance_id_dict.pop(message_id) # 消息回复结束之后删除卡片实例id self.card_instance_id_dict.pop(message_id) # 消息回复结束之后删除卡片实例id