client.join_chat() now returns pyrogram.Chat instead of MTProto Update (#206)
* client.join_chat() now returns pyrogram.Chat instead of MTProto Update * Do not use Chat._parse_mtproto_chat() method * Update chat.py Rename _parse_mtproto_chat to a generic _parse_chat_chat Hint about its current usage (none).
This commit is contained in:
parent
fda25f6534
commit
87c4d08d9c
@ -16,6 +16,7 @@
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pyrogram
|
||||
from pyrogram.api import functions, types
|
||||
from ...ext import BaseClient
|
||||
|
||||
@ -30,17 +31,24 @@ class JoinChat(BaseClient):
|
||||
Unique identifier for the target chat in form of a *t.me/joinchat/* link or username of the target
|
||||
channel/supergroup (in the format @username).
|
||||
|
||||
Returns:
|
||||
On success, a :obj:`Chat <pyrogram.Chat>` object is returned.
|
||||
|
||||
Raises:
|
||||
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||
"""
|
||||
match = self.INVITE_LINK_RE.match(chat_id)
|
||||
|
||||
if match:
|
||||
return self.send(
|
||||
chat = self.send(
|
||||
functions.messages.ImportChatInvite(
|
||||
hash=match.group(1)
|
||||
)
|
||||
)
|
||||
if isinstance(chat.chats[0], types.Chat):
|
||||
return pyrogram.Chat._parse_chat_chat(self, chat.chats[0])
|
||||
elif isinstance(chat.chats[0], types.Channel):
|
||||
return pyrogram.Chat._parse_channel_chat(self, chat.chats[0])
|
||||
else:
|
||||
resolved_peer = self.send(
|
||||
functions.contacts.ResolveUsername(
|
||||
@ -53,8 +61,10 @@ class JoinChat(BaseClient):
|
||||
access_hash=resolved_peer.chats[0].access_hash
|
||||
)
|
||||
|
||||
return self.send(
|
||||
chat = self.send(
|
||||
functions.channels.JoinChannel(
|
||||
channel=channel
|
||||
)
|
||||
)
|
||||
|
||||
return pyrogram.Chat._parse_channel_chat(self, chat.chats[0])
|
||||
|
@ -209,3 +209,14 @@ class Chat(PyrogramType):
|
||||
parsed_chat.invite_link = full_chat.exported_invite.link
|
||||
|
||||
return parsed_chat
|
||||
|
||||
@staticmethod
|
||||
def _parse_chat(client, chat):
|
||||
# A wrapper around each entity parser: User, Chat and Channel.
|
||||
# Currently unused, might become useful in future.
|
||||
if isinstance(chat, types.Chat):
|
||||
return Chat._parse_chat_chat(client, chat)
|
||||
elif isinstance(chat, types.User):
|
||||
return Chat._parse_user_chat(client, chat)
|
||||
else:
|
||||
return Chat._parse_channel_chat(client, chat)
|
||||
|
Loading…
Reference in New Issue
Block a user