Skip to content

Commit 2db2ca3

Browse files
committed
Remove ChatMembers type
1 parent 2e05c81 commit 2db2ca3

File tree

7 files changed

+38
-100
lines changed

7 files changed

+38
-100
lines changed

docs/source/api/types.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ Users & Chats
3030
- :class:`ChatPreview`
3131
- :class:`ChatPhoto`
3232
- :class:`ChatMember`
33-
- :class:`ChatMembers`
3433
- :class:`ChatPermissions`
3534
- :class:`Dialog`
3635
- :class:`Dialogs`
@@ -123,7 +122,6 @@ Details
123122
.. autoclass:: ChatPreview()
124123
.. autoclass:: ChatPhoto()
125124
.. autoclass:: ChatMember()
126-
.. autoclass:: ChatMembers()
127125
.. autoclass:: ChatPermissions()
128126
.. autoclass:: Dialog()
129127
.. autoclass:: Dialogs()

pyrogram/client/methods/chats/get_chat_member.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,18 @@ def get_chat_member(
5151
user = self.resolve_peer(user_id)
5252

5353
if isinstance(chat, types.InputPeerChat):
54-
full_chat = self.send(
54+
r = self.send(
5555
functions.messages.GetFullChat(
5656
chat_id=chat.chat_id
5757
)
5858
)
5959

60-
for member in pyrogram.ChatMembers._parse(self, full_chat).chat_members:
60+
members = r.full_chat.participants.participants
61+
users = {i.id: i for i in r.users}
62+
63+
for member in members:
64+
member = pyrogram.ChatMember._parse(self, member, users)
65+
6166
if isinstance(user, types.InputPeerSelf):
6267
if member.user.is_self:
6368
return member

pyrogram/client/methods/chats/get_chat_members.py

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import logging
2020
import time
21-
from typing import Union
21+
from typing import Union, List
2222

2323
import pyrogram
2424
from pyrogram.api import functions, types
@@ -45,7 +45,7 @@ def get_chat_members(
4545
limit: int = 200,
4646
query: str = "",
4747
filter: str = Filters.ALL
48-
) -> "pyrogram.ChatMembers":
48+
) -> List["pyrogram.ChatMember"]:
4949
"""Get a chunk of the members list of a chat.
5050
5151
You can get up to 200 chat members at once.
@@ -59,15 +59,16 @@ def get_chat_members(
5959
6060
offset (``int``, *optional*):
6161
Sequential number of the first member to be returned.
62-
Defaults to 0 [1]_.
62+
Only applicable to supergroups and channels. Defaults to 0 [1]_.
6363
6464
limit (``int``, *optional*):
6565
Limits the number of members to be retrieved.
66+
Only applicable to supergroups and channels.
6667
Defaults to 200, which is also the maximum server limit allowed per method call.
6768
6869
query (``str``, *optional*):
6970
Query string to filter members based on their display names and usernames.
70-
Defaults to "" (empty string) [2]_.
71+
Only applicable to supergroups and channels. Defaults to "" (empty string) [2]_.
7172
7273
filter (``str``, *optional*):
7374
Filter used to select the kind of members you want to retrieve. Only applicable for supergroups
@@ -78,6 +79,7 @@ def get_chat_members(
7879
*"bots"* - bots only,
7980
*"recent"* - recent members only,
8081
*"administrators"* - chat administrators only.
82+
Only applicable to supergroups and channels.
8183
Defaults to *"all"*.
8284
8385
.. [1] Server limit: on supergroups, you can get up to 10,000 members for a single query and up to 200 members
@@ -86,7 +88,7 @@ def get_chat_members(
8688
.. [2] A query string is applicable only for *"all"*, *"kicked"* and *"restricted"* filters only.
8789
8890
Returns:
89-
:obj:`ChatMembers`: On success, an object containing a list of chat members is returned.
91+
List of :obj:`ChatMember`: On success, a list of chat members is returned.
9092
9193
Raises:
9294
RPCError: In case of a Telegram RPC error.
@@ -95,14 +97,16 @@ def get_chat_members(
9597
peer = self.resolve_peer(chat_id)
9698

9799
if isinstance(peer, types.InputPeerChat):
98-
return pyrogram.ChatMembers._parse(
99-
self,
100-
self.send(
101-
functions.messages.GetFullChat(
102-
chat_id=peer.chat_id
103-
)
100+
r = self.send(
101+
functions.messages.GetFullChat(
102+
chat_id=peer.chat_id
104103
)
105104
)
105+
106+
members = r.full_chat.participants.participants
107+
users = {i.id: i for i in r.users}
108+
109+
return pyrogram.List(pyrogram.ChatMember._parse(self, member, users) for member in members)
106110
elif isinstance(peer, types.InputPeerChannel):
107111
filter = filter.lower()
108112

@@ -123,18 +127,20 @@ def get_chat_members(
123127

124128
while True:
125129
try:
126-
return pyrogram.ChatMembers._parse(
127-
self,
128-
self.send(
129-
functions.channels.GetParticipants(
130-
channel=peer,
131-
filter=filter,
132-
offset=offset,
133-
limit=limit,
134-
hash=0
135-
)
130+
r = self.send(
131+
functions.channels.GetParticipants(
132+
channel=peer,
133+
filter=filter,
134+
offset=offset,
135+
limit=limit,
136+
hash=0
136137
)
137138
)
139+
140+
members = r.participants
141+
users = {i.id: i for i in r.users}
142+
143+
return pyrogram.List(pyrogram.ChatMember._parse(self, member, users) for member in members)
138144
except FloodWait as e:
139145
log.warning("Sleeping for {}s".format(e.x))
140146
time.sleep(e.x)

pyrogram/client/methods/chats/iter_chat_members.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def iter_chat_members(
106106
limit=limit,
107107
query=q,
108108
filter=filter
109-
).chat_members
109+
)
110110

111111
if not chat_members:
112112
break

pyrogram/client/types/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
from .inline_mode import *
2121
from .input_media import *
2222
from .input_message_content import *
23+
from .list import List
2324
from .messages_and_media import *
25+
from .object import Object
2426
from .update import *
2527
from .user_and_chats import *

pyrogram/client/types/user_and_chats/__init__.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
from .chat import Chat
2020
from .chat_member import ChatMember
21-
from .chat_members import ChatMembers
2221
from .chat_permissions import ChatPermissions
2322
from .chat_photo import ChatPhoto
2423
from .chat_preview import ChatPreview
@@ -28,6 +27,5 @@
2827
from .user_status import UserStatus
2928

3029
__all__ = [
31-
"Chat", "ChatMember", "ChatMembers", "ChatPermissions", "ChatPhoto", "ChatPreview", "Dialog", "Dialogs", "User",
32-
"UserStatus"
30+
"Chat", "ChatMember", "ChatPermissions", "ChatPhoto", "ChatPreview", "Dialog", "Dialogs", "User", "UserStatus"
3331
]

pyrogram/client/types/user_and_chats/chat_members.py

Lines changed: 0 additions & 71 deletions
This file was deleted.

0 commit comments

Comments
 (0)