提供qq协议端判断方法

This commit is contained in:
HibiKier 2025-02-12 23:53:01 +08:00
parent 4ed1791b30
commit a77d350dfb

View File

@ -156,43 +156,44 @@ class PlatformUtils:
返回: 返回:
UserData | None: 用户数据 UserData | None: 用户数据
""" """
if interface := get_interface(bot): if not (interface := get_interface(bot)):
member = None return None
user = None member = None
if channel_id: user = None
member = await interface.get_member( if channel_id:
SceneType.CHANNEL_TEXT, channel_id, user_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 member: if member:
return UserData( user = member.user
name=user.name or "", elif group_id:
card=member.nick, member = await interface.get_member(SceneType.GROUP, group_id, user_id)
user_id=user.id, if member:
group_id=group_id, user = member.user
channel_id=channel_id, else:
role=member.role.id if member.role else None, user = await interface.get_user(user_id)
join_time=int(member.joined_at.timestamp()) if not user:
if member.joined_at return None
else None, return (
) UserData(
else: name=user.name or "",
return UserData( card=member.nick,
name=user.name or "", user_id=user.id,
user_id=user.id, group_id=group_id,
group_id=group_id, channel_id=channel_id,
channel_id=channel_id, role=member.role.id if member.role else None,
) join_time=(
return None 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 @classmethod
async def get_user_avatar( async def get_user_avatar(
@ -343,6 +344,23 @@ class PlatformUtils:
return "qq" if platform.startswith("qq") else platform return "qq" if platform.startswith("qq") else platform
return "unknown" 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 @classmethod
async def get_group_list( async def get_group_list(
cls, bot: Bot, only_group: bool = False cls, bot: Bot, only_group: bool = False