From a77d350dfb2ae8f0dce55d62b9df8ba9f0abc7d3 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Wed, 12 Feb 2025 23:53:01 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=8F=90=E4=BE=9Bqq=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E7=AB=AF=E5=88=A4=E6=96=AD=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/utils/platform.py | 90 +++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 36 deletions(-) diff --git a/zhenxun/utils/platform.py b/zhenxun/utils/platform.py index fbf877e5..935ec3de 100644 --- a/zhenxun/utils/platform.py +++ b/zhenxun/utils/platform.py @@ -156,43 +156,44 @@ class PlatformUtils: 返回: UserData | None: 用户数据 """ - if interface := get_interface(bot): - member = None - user = None - if channel_id: - member = await interface.get_member( - SceneType.CHANNEL_TEXT, channel_id, user_id - ) - if member: - user = member.user - elif group_id: - member = await interface.get_member(SceneType.GROUP, group_id, user_id) - if member: - user = member.user - else: - user = await interface.get_user(user_id) - if not user: - return None + if not (interface := get_interface(bot)): + return None + member = None + user = None + if channel_id: + member = await interface.get_member( + SceneType.CHANNEL_TEXT, channel_id, user_id + ) if member: - return UserData( - name=user.name or "", - card=member.nick, - user_id=user.id, - group_id=group_id, - channel_id=channel_id, - role=member.role.id if member.role else None, - join_time=int(member.joined_at.timestamp()) - if member.joined_at - else None, - ) - else: - return UserData( - name=user.name or "", - user_id=user.id, - group_id=group_id, - channel_id=channel_id, - ) - return None + user = member.user + elif group_id: + member = await interface.get_member(SceneType.GROUP, group_id, user_id) + if member: + user = member.user + else: + user = await interface.get_user(user_id) + if not user: + return None + return ( + UserData( + name=user.name or "", + card=member.nick, + user_id=user.id, + group_id=group_id, + channel_id=channel_id, + role=member.role.id if member.role else None, + join_time=( + int(member.joined_at.timestamp()) if member.joined_at else None + ), + ) + if member + else UserData( + name=user.name or "", + user_id=user.id, + group_id=group_id, + channel_id=channel_id, + ) + ) @classmethod async def get_user_avatar( @@ -343,6 +344,23 @@ class PlatformUtils: return "qq" if platform.startswith("qq") else platform return "unknown" + @classmethod + def is_forward_merge_supported(cls, t: Bot | Uninfo) -> bool: + """是否支持转发消息 + + 参数: + t: bot | Uninfo + + 返回: + bool: 是否支持转发消息 + """ + if not isinstance(t, Bot): + return t.basic["scope"] == SupportScope.qq_client + if interface := get_interface(t): + info = interface.basic_info() + return info["scope"] == SupportScope.qq_client + return False + @classmethod async def get_group_list( cls, bot: Bot, only_group: bool = False