Skip to content

Commit 207d451

Browse files
fushinoridelivrance
andcommitted
Add more Chat bound methods (pyrogram#383)
* Add more bound methods Bound methods for get_chat_member, get_chat_members, iter_chat_members, add_chat_members * Update compiler.py Co-authored-by: Dan <14043624+delivrance@users.noreply.github.com>
1 parent 850b793 commit 207d451

File tree

2 files changed

+128
-9
lines changed

2 files changed

+128
-9
lines changed

compiler/docs/compiler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,10 @@ def get_title_list(s: str) -> list:
450450
Chat.unban_member
451451
Chat.restrict_member
452452
Chat.promote_member
453+
Chat.get_member
454+
Chat.get_members
455+
Chat.iter_members
456+
Chat.add_members
453457
Chat.join
454458
Chat.leave
455459
""",

pyrogram/client/types/user_and_chats/chat.py

Lines changed: 124 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# You should have received a copy of the GNU Lesser General Public License
1717
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818

19-
from typing import Union, List
19+
from typing import Union, List, Generator, Optional
2020

2121
import pyrogram
2222
from pyrogram.api import types
@@ -566,15 +566,8 @@ def restrict_member(
566566
return self._client.restrict_chat_member(
567567
chat_id=self.id,
568568
user_id=user_id,
569+
permissions=permissions,
569570
until_date=until_date,
570-
can_send_messages=permissions.can_send_messages,
571-
can_send_media_messages=permissions.can_send_media_messages,
572-
can_send_other_messages=permissions.can_send_other_messages,
573-
can_add_web_page_previews=permissions.can_add_web_page_previews,
574-
can_send_polls=permissions.can_send_polls,
575-
can_change_info=permissions.can_change_info,
576-
can_invite_users=permissions.can_invite_users,
577-
can_pin_messages=permissions.can_pin_messages
578571
)
579572

580573
def promote_member(
@@ -725,3 +718,125 @@ def export_invite_link(self):
725718
"""
726719

727720
return self._client.export_chat_invite_link(self.id)
721+
722+
def get_member(
723+
self,
724+
user_id: Union[int, str],
725+
) -> "pyrogram.ChatMember":
726+
"""Bound method *get_member* of :obj:`Chat`.
727+
728+
Use as a shortcut for:
729+
730+
.. code-block:: python
731+
732+
client.get_chat_member(
733+
chat_id=chat_id,
734+
user_id=user_id
735+
)
736+
737+
Example:
738+
.. code-block:: python
739+
740+
chat.get_member(user_id)
741+
742+
Returns:
743+
:obj:`ChatMember`: On success, a chat member is returned.
744+
"""
745+
746+
return self._client.get_chat_member(
747+
self.id,
748+
user_id=user_id
749+
)
750+
751+
def get_members(
752+
self,
753+
offset: int = 0,
754+
limit: int = 200,
755+
query: str = "",
756+
filter: str = "all"
757+
) -> List["pyrogram.ChatMember"]:
758+
"""Bound method *get_members* of :obj:`Chat`.
759+
760+
Use as a shortcut for:
761+
762+
.. code-block:: python
763+
764+
client.get_chat_members(chat_id)
765+
766+
Example:
767+
.. code-block:: python
768+
769+
# Get first 200 recent members
770+
chat.get_members()
771+
772+
Returns:
773+
List of :obj:`ChatMember`: On success, a list of chat members is returned.
774+
"""
775+
776+
return self._client.get_chat_members(
777+
self.id,
778+
offset=offset,
779+
limit=limit,
780+
query=query,
781+
filter=filter
782+
)
783+
784+
def iter_members(
785+
self,
786+
limit: int = 0,
787+
query: str = "",
788+
filter: str = "all"
789+
) -> Optional[Generator["pyrogram.ChatMember", None, None]]:
790+
"""Bound method *iter_members* of :obj:`Chat`.
791+
792+
Use as a shortcut for:
793+
794+
.. code-block:: python
795+
796+
for member in client.iter_chat_members(chat_id):
797+
print(member.user.first_name)
798+
799+
Example:
800+
.. code-block:: python
801+
802+
for member in chat.iter_members():
803+
print(member.user.first_name)
804+
805+
Returns:
806+
``Generator``: A generator yielding :obj:`ChatMember` objects.
807+
"""
808+
809+
return self._client.iter_chat_members(
810+
self.id,
811+
limit=limit,
812+
query=query,
813+
filter=filter
814+
)
815+
816+
def add_members(
817+
self,
818+
user_ids: Union[Union[int, str], List[Union[int, str]]],
819+
forward_limit: int = 100
820+
) -> bool:
821+
"""Bound method *add_members* of :obj:`Chat`.
822+
823+
Use as a shortcut for:
824+
825+
.. code-block:: python
826+
827+
client.add_chat_members(chat_id, user_id)
828+
829+
Example:
830+
.. code-block:: python
831+
832+
chat.add_members(user_id)
833+
834+
Returns:
835+
``bool``: On success, True is returned.
836+
"""
837+
838+
return self._client.add_chat_members(
839+
self.id,
840+
user_ids=user_ids,
841+
forward_limit=forward_limit
842+
)

0 commit comments

Comments
 (0)