diff --git a/pkg/platform/sources/dingtalk.py b/pkg/platform/sources/dingtalk.py index 505ab9a2..97df77d6 100644 --- a/pkg/platform/sources/dingtalk.py +++ b/pkg/platform/sources/dingtalk.py @@ -77,7 +77,7 @@ class DingTalkEventConverter(adapter.EventConverter): remark="" ), message_chain = message_chain, - time = datetime.datetime.now(), + time = event.incoming_message.create_at, source_platform_object=event, ) elif event.conversation == 'GroupMessage': @@ -95,7 +95,7 @@ class DingTalkEventConverter(adapter.EventConverter): last_speak_timestamp=0, mute_time_remaining=0 ) - time = datetime.datetime.now(), + time = event.incoming_message.create_at return platform_events.GroupMessage( sender =sender, message_chain = message_chain, diff --git a/pkg/platform/sources/qqofficial.py b/pkg/platform/sources/qqofficial.py index 518dfdb8..1e08b435 100644 --- a/pkg/platform/sources/qqofficial.py +++ b/pkg/platform/sources/qqofficial.py @@ -74,7 +74,11 @@ class QQOfficialEventConverter(adapter.EventConverter): remark = "", ) return platform_events.FriendMessage( - sender = friend,message_chain = yiri_chain,time = event.timestamp, + sender = friend,message_chain = yiri_chain,time = int( + datetime.datetime.strptime( + event.timestamp, "%Y-%m-%dT%H:%M:%S%z" + ).timestamp() + ), source_platform_object=event ) @@ -105,7 +109,11 @@ class QQOfficialEventConverter(adapter.EventConverter): last_speak_timestamp=0, mute_time_remaining=0 ) - time = event.timestamp + time = int( + datetime.datetime.strptime( + event.timestamp, "%Y-%m-%dT%H:%M:%S%z" + ).timestamp() + ) return platform_events.GroupMessage( sender = sender, message_chain=yiri_chain, @@ -128,7 +136,11 @@ class QQOfficialEventConverter(adapter.EventConverter): last_speak_timestamp=0, mute_time_remaining=0 ) - time = event.timestamp, + time = int( + datetime.datetime.strptime( + event.timestamp, "%Y-%m-%dT%H:%M:%S%z" + ).timestamp() + ), return platform_events.GroupMessage( sender =sender, message_chain = yiri_chain, diff --git a/pkg/platform/types/events.py b/pkg/platform/types/events.py index 867f8a83..40507315 100644 --- a/pkg/platform/types/events.py +++ b/pkg/platform/types/events.py @@ -57,6 +57,9 @@ class MessageEvent(Event): message_chain: platform_message.MessageChain """消息内容。""" + time: float | None = None + """消息发送时间戳。""" + source_platform_object: typing.Optional[typing.Any] = None """原消息平台对象。 供消息平台适配器开发者使用,如果回复用户时需要使用原消息事件对象的信息, diff --git a/pkg/provider/runners/difysvapi.py b/pkg/provider/runners/difysvapi.py index 9db1e98f..bc806431 100644 --- a/pkg/provider/runners/difysvapi.py +++ b/pkg/provider/runners/difysvapi.py @@ -5,6 +5,7 @@ import json import uuid import re import base64 +import datetime import aiohttp @@ -69,6 +70,7 @@ class DifyServiceAPIRunner(runner.RequestRunner): """ plain_text = "" image_ids = [] + if isinstance(query.user_message.content, list): for ce in query.user_message.content: if ce.type == "text": @@ -230,6 +232,9 @@ class DifyServiceAPIRunner(runner.RequestRunner): plain_text, image_ids = await self._preprocess_user_message(query) + # 尝试获取 CreateTime + create_time = int(query.message_event.time) if query.message_event.time else int(datetime.datetime.now().timestamp()) + files = [ { "type": "image", @@ -246,6 +251,7 @@ class DifyServiceAPIRunner(runner.RequestRunner): "langbot_user_message_text": plain_text, "langbot_session_id": f"{query.session.launcher_type.value}_{query.session.launcher_id}", "langbot_conversation_id": cov_id, + "langbot_msg_create_time": create_time, }, user=f"{query.session.launcher_type.value}_{query.session.launcher_id}", files=files,