Add more Chat bound methods (#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>
This commit is contained in:
Real Phoenix 2020-04-06 14:22:38 +02:00 committed by Dan
parent 850b79315f
commit 207d451a01
2 changed files with 128 additions and 9 deletions

View File

@ -450,6 +450,10 @@ def pyrogram_api():
Chat.unban_member Chat.unban_member
Chat.restrict_member Chat.restrict_member
Chat.promote_member Chat.promote_member
Chat.get_member
Chat.get_members
Chat.iter_members
Chat.add_members
Chat.join Chat.join
Chat.leave Chat.leave
""", """,

View File

@ -16,7 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from typing import Union, List from typing import Union, List, Generator, Optional
import pyrogram import pyrogram
from pyrogram.api import types from pyrogram.api import types
@ -566,15 +566,8 @@ class Chat(Object):
return self._client.restrict_chat_member( return self._client.restrict_chat_member(
chat_id=self.id, chat_id=self.id,
user_id=user_id, user_id=user_id,
permissions=permissions,
until_date=until_date, until_date=until_date,
can_send_messages=permissions.can_send_messages,
can_send_media_messages=permissions.can_send_media_messages,
can_send_other_messages=permissions.can_send_other_messages,
can_add_web_page_previews=permissions.can_add_web_page_previews,
can_send_polls=permissions.can_send_polls,
can_change_info=permissions.can_change_info,
can_invite_users=permissions.can_invite_users,
can_pin_messages=permissions.can_pin_messages
) )
def promote_member( def promote_member(
@ -725,3 +718,125 @@ class Chat(Object):
""" """
return self._client.export_chat_invite_link(self.id) return self._client.export_chat_invite_link(self.id)
def get_member(
self,
user_id: Union[int, str],
) -> "pyrogram.ChatMember":
"""Bound method *get_member* of :obj:`Chat`.
Use as a shortcut for:
.. code-block:: python
client.get_chat_member(
chat_id=chat_id,
user_id=user_id
)
Example:
.. code-block:: python
chat.get_member(user_id)
Returns:
:obj:`ChatMember`: On success, a chat member is returned.
"""
return self._client.get_chat_member(
self.id,
user_id=user_id
)
def get_members(
self,
offset: int = 0,
limit: int = 200,
query: str = "",
filter: str = "all"
) -> List["pyrogram.ChatMember"]:
"""Bound method *get_members* of :obj:`Chat`.
Use as a shortcut for:
.. code-block:: python
client.get_chat_members(chat_id)
Example:
.. code-block:: python
# Get first 200 recent members
chat.get_members()
Returns:
List of :obj:`ChatMember`: On success, a list of chat members is returned.
"""
return self._client.get_chat_members(
self.id,
offset=offset,
limit=limit,
query=query,
filter=filter
)
def iter_members(
self,
limit: int = 0,
query: str = "",
filter: str = "all"
) -> Optional[Generator["pyrogram.ChatMember", None, None]]:
"""Bound method *iter_members* of :obj:`Chat`.
Use as a shortcut for:
.. code-block:: python
for member in client.iter_chat_members(chat_id):
print(member.user.first_name)
Example:
.. code-block:: python
for member in chat.iter_members():
print(member.user.first_name)
Returns:
``Generator``: A generator yielding :obj:`ChatMember` objects.
"""
return self._client.iter_chat_members(
self.id,
limit=limit,
query=query,
filter=filter
)
def add_members(
self,
user_ids: Union[Union[int, str], List[Union[int, str]]],
forward_limit: int = 100
) -> bool:
"""Bound method *add_members* of :obj:`Chat`.
Use as a shortcut for:
.. code-block:: python
client.add_chat_members(chat_id, user_id)
Example:
.. code-block:: python
chat.add_members(user_id)
Returns:
``bool``: On success, True is returned.
"""
return self._client.add_chat_members(
self.id,
user_ids=user_ids,
forward_limit=forward_limit
)