From 66cd896a998b8748e140d00162c0819bccf20d89 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sun, 16 Dec 2018 17:10:55 +0100 Subject: [PATCH] Allow passing raw --- .../client/types/user_and_chats/chat_member.py | 15 ++++++++------- .../client/types/user_and_chats/chat_members.py | 17 ++++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pyrogram/client/types/user_and_chats/chat_member.py b/pyrogram/client/types/user_and_chats/chat_member.py index b05630da..b3e2916b 100644 --- a/pyrogram/client/types/user_and_chats/chat_member.py +++ b/pyrogram/client/types/user_and_chats/chat_member.py @@ -84,7 +84,7 @@ class ChatMember(PyrogramType): can_delete_messages: bool = None, can_invite_users: bool = None, can_restrict_members: bool = None, can_pin_messages: bool = None, can_promote_members: bool = None, can_send_messages: bool = None, can_send_media_messages: bool = None, can_send_other_messages: bool = None, - can_add_web_page_previews: bool = None, client=None): + can_add_web_page_previews: bool = None, client, raw): self.user = user self.status = status self.until_date = until_date @@ -102,18 +102,19 @@ class ChatMember(PyrogramType): self.can_send_other_messages = can_send_other_messages self.can_add_web_page_previews = can_add_web_page_previews - self.client = client + self._client = client + self._raw = raw @staticmethod def parse(client, member, user) -> "ChatMember": if isinstance(member, (types.ChannelParticipant, types.ChannelParticipantSelf, types.ChatParticipant)): - return ChatMember(user=user, status="member", client=client) + return ChatMember(user=user, status="member", client=client, raw=member) if isinstance(member, (types.ChannelParticipantCreator, types.ChatParticipantCreator)): - return ChatMember(user=user, status="creator", client=client) + return ChatMember(user=user, status="creator", client=client, raw=member) if isinstance(member, types.ChatParticipantAdmin): - return ChatMember(user=user, status="administrator", client=client) + return ChatMember(user=user, status="administrator", client=client, raw=member) if isinstance(member, types.ChannelParticipantAdmin): rights = member.admin_rights @@ -130,7 +131,7 @@ class ChatMember(PyrogramType): can_restrict_members=rights.ban_users, can_pin_messages=rights.pin_messages, can_promote_members=rights.add_admins, - client=client + client=client, raw=member ) if isinstance(member, types.ChannelParticipantBanned): @@ -140,7 +141,7 @@ class ChatMember(PyrogramType): user=user, status="kicked" if rights.view_messages else "restricted", until_date=0 if rights.until_date == (1 << 31) - 1 else rights.until_date, - client=client + client=client, raw=member ) if chat_member.status == "restricted": diff --git a/pyrogram/client/types/user_and_chats/chat_members.py b/pyrogram/client/types/user_and_chats/chat_members.py index e58a4168..4f057309 100644 --- a/pyrogram/client/types/user_and_chats/chat_members.py +++ b/pyrogram/client/types/user_and_chats/chat_members.py @@ -17,8 +17,9 @@ # along with Pyrogram. If not, see . from pyrogram.api import types +from .chat_member import ChatMember +from .user import User from ..pyrogram_type import PyrogramType -from ..user_and_chats import ChatMember, User class ChatMembers(PyrogramType): @@ -32,14 +33,18 @@ class ChatMembers(PyrogramType): Requested chat members. """ - def __init__(self, *, total_count: int, chat_members: list, client=None): + def __init__(self, *, total_count: int, chat_members: list, client, raw): self.total_count = total_count self.chat_members = chat_members - self.client = client + self._client = client + self._raw = raw @staticmethod - def parse(client, members, users: dict): + def parse(client, members): + users = {i.id: i for i in members.users} + chat_members = [] + if isinstance(members, types.channels.ChannelParticipants): total_count = members.count members = members.participants @@ -47,8 +52,6 @@ class ChatMembers(PyrogramType): members = members.full_chat.participants.participants total_count = len(members) - chat_members = [] - for member in members: user = User.parse(client, users[member.user_id]) chat_members.append(ChatMember.parse(client, member, user)) @@ -56,5 +59,5 @@ class ChatMembers(PyrogramType): return ChatMembers( total_count=total_count, chat_members=chat_members, - client=client + client=client, raw=members )