mirror of
https://github.com/pyrogram/pyrogram
synced 2025-08-28 21:07:59 +00:00
Add get_chat_preview method and ChatPreview object
This commit is contained in:
parent
9fadbbd728
commit
0e62b3472a
@ -74,6 +74,7 @@ Chats
|
|||||||
|
|
||||||
join_chat
|
join_chat
|
||||||
leave_chat
|
leave_chat
|
||||||
|
get_chat_preview
|
||||||
kick_chat_member
|
kick_chat_member
|
||||||
unban_chat_member
|
unban_chat_member
|
||||||
restrict_chat_member
|
restrict_chat_member
|
||||||
|
@ -12,6 +12,7 @@ Users & Chats
|
|||||||
User
|
User
|
||||||
UserStatus
|
UserStatus
|
||||||
Chat
|
Chat
|
||||||
|
ChatPreview
|
||||||
ChatPhoto
|
ChatPhoto
|
||||||
ChatMember
|
ChatMember
|
||||||
ChatMembers
|
ChatMembers
|
||||||
@ -82,6 +83,9 @@ Input Media
|
|||||||
.. autoclass:: Chat
|
.. autoclass:: Chat
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
.. autoclass:: ChatPreview
|
||||||
|
:members:
|
||||||
|
|
||||||
.. autoclass:: ChatPhoto
|
.. autoclass:: ChatPhoto
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ from .client.types import (
|
|||||||
Location, Message, MessageEntity, Dialog, Dialogs, Photo, PhotoSize, Sticker, User, UserStatus,
|
Location, Message, MessageEntity, Dialog, Dialogs, Photo, PhotoSize, Sticker, User, UserStatus,
|
||||||
UserProfilePhotos, Venue, Animation, Video, VideoNote, Voice, CallbackQuery, Messages, ForceReply,
|
UserProfilePhotos, Venue, Animation, Video, VideoNote, Voice, CallbackQuery, Messages, ForceReply,
|
||||||
InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove,
|
InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup, ReplyKeyboardRemove,
|
||||||
Poll, PollOption
|
Poll, PollOption, ChatPreview
|
||||||
)
|
)
|
||||||
from .client import (
|
from .client import (
|
||||||
Client, ChatAction, ParseMode, Emoji,
|
Client, ChatAction, ParseMode, Emoji,
|
||||||
|
@ -22,6 +22,7 @@ from .get_chat import GetChat
|
|||||||
from .get_chat_member import GetChatMember
|
from .get_chat_member import GetChatMember
|
||||||
from .get_chat_members import GetChatMembers
|
from .get_chat_members import GetChatMembers
|
||||||
from .get_chat_members_count import GetChatMembersCount
|
from .get_chat_members_count import GetChatMembersCount
|
||||||
|
from .get_chat_preview import GetChatPreview
|
||||||
from .get_dialogs import GetDialogs
|
from .get_dialogs import GetDialogs
|
||||||
from .join_chat import JoinChat
|
from .join_chat import JoinChat
|
||||||
from .kick_chat_member import KickChatMember
|
from .kick_chat_member import KickChatMember
|
||||||
@ -54,6 +55,7 @@ class Chats(
|
|||||||
PinChatMessage,
|
PinChatMessage,
|
||||||
UnpinChatMessage,
|
UnpinChatMessage,
|
||||||
GetDialogs,
|
GetDialogs,
|
||||||
GetChatMembersCount
|
GetChatMembersCount,
|
||||||
|
GetChatPreview
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
63
pyrogram/client/methods/chats/get_chat_preview.py
Normal file
63
pyrogram/client/methods/chats/get_chat_preview.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>
|
||||||
|
#
|
||||||
|
# This file is part of Pyrogram.
|
||||||
|
#
|
||||||
|
# Pyrogram is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published
|
||||||
|
# by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Pyrogram is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
class GetChatPreview(BaseClient):
|
||||||
|
def get_chat_preview(self,
|
||||||
|
invite_link: str):
|
||||||
|
"""Use this method to get the preview of a chat using the invite link.
|
||||||
|
|
||||||
|
This method only returns a chat preview, if you want to join a chat use :meth:`join_chat`
|
||||||
|
|
||||||
|
Args:
|
||||||
|
invite_link (``str``):
|
||||||
|
Unique identifier for the target chat in form of *t.me/joinchat/* links.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Either :obj:`Chat` or :obj:`ChatPreview`, depending on whether you already joined the chat or not.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
:class:`Error <pyrogram.Error>` in case of a Telegram RPC error.
|
||||||
|
``ValueError`` in case of an invalid invite_link.
|
||||||
|
"""
|
||||||
|
match = self.INVITE_LINK_RE.match(invite_link)
|
||||||
|
|
||||||
|
if match:
|
||||||
|
r = self.send(
|
||||||
|
functions.messages.CheckChatInvite(
|
||||||
|
hash=match.group(1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if isinstance(r, types.ChatInvite):
|
||||||
|
return pyrogram.ChatPreview._parse(self, r)
|
||||||
|
|
||||||
|
if isinstance(r, types.ChatInviteAlready):
|
||||||
|
chat = r.chat
|
||||||
|
|
||||||
|
if isinstance(chat, types.Chat):
|
||||||
|
return pyrogram.Chat._parse_chat_chat(self, chat)
|
||||||
|
|
||||||
|
if isinstance(chat, types.Channel):
|
||||||
|
return pyrogram.Chat._parse_channel_chat(self, chat)
|
||||||
|
else:
|
||||||
|
raise ValueError("The invite_link is invalid")
|
@ -35,5 +35,5 @@ from .messages_and_media import (
|
|||||||
)
|
)
|
||||||
from .user_and_chats import (
|
from .user_and_chats import (
|
||||||
Chat, ChatMember, ChatMembers, ChatPhoto,
|
Chat, ChatMember, ChatMembers, ChatPhoto,
|
||||||
Dialog, Dialogs, User, UserStatus
|
Dialog, Dialogs, User, UserStatus, ChatPreview
|
||||||
)
|
)
|
||||||
|
@ -20,6 +20,7 @@ from .chat import Chat
|
|||||||
from .chat_member import ChatMember
|
from .chat_member import ChatMember
|
||||||
from .chat_members import ChatMembers
|
from .chat_members import ChatMembers
|
||||||
from .chat_photo import ChatPhoto
|
from .chat_photo import ChatPhoto
|
||||||
|
from .chat_preview import ChatPreview
|
||||||
from .dialog import Dialog
|
from .dialog import Dialog
|
||||||
from .dialogs import Dialogs
|
from .dialogs import Dialogs
|
||||||
from .user import User
|
from .user import User
|
||||||
|
78
pyrogram/client/types/user_and_chats/chat_preview.py
Normal file
78
pyrogram/client/types/user_and_chats/chat_preview.py
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# Pyrogram - Telegram MTProto API Client Library for Python
|
||||||
|
# Copyright (C) 2017-2019 Dan Tès <https://github.com/delivrance>
|
||||||
|
#
|
||||||
|
# This file is part of Pyrogram.
|
||||||
|
#
|
||||||
|
# Pyrogram is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published
|
||||||
|
# by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Pyrogram is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram.api import types
|
||||||
|
from .chat_photo import ChatPhoto
|
||||||
|
from ..pyrogram_type import PyrogramType
|
||||||
|
from ..user_and_chats.user import User
|
||||||
|
|
||||||
|
|
||||||
|
class ChatPreview(PyrogramType):
|
||||||
|
"""This object represents a chat preview.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
title (``str``):
|
||||||
|
Title of the chat.
|
||||||
|
|
||||||
|
photo (:obj:`ChatPhoto`):
|
||||||
|
Chat photo. Suitable for downloads only.
|
||||||
|
|
||||||
|
type (``str``):
|
||||||
|
Type of chat, can be either, "group", "supergroup" or "channel".
|
||||||
|
|
||||||
|
members_count (``int``):
|
||||||
|
Chat members count.
|
||||||
|
|
||||||
|
members (List of :obj:`User`, *optional*):
|
||||||
|
Preview of some of the chat members.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self,
|
||||||
|
*,
|
||||||
|
client: "pyrogram.client.ext.BaseClient",
|
||||||
|
title: str,
|
||||||
|
photo: ChatPhoto,
|
||||||
|
type: str,
|
||||||
|
members_count: int,
|
||||||
|
members: List[User] = None):
|
||||||
|
super().__init__(client)
|
||||||
|
|
||||||
|
self.title = title
|
||||||
|
self.photo = photo
|
||||||
|
self.type = type
|
||||||
|
self.members_count = members_count
|
||||||
|
self.members = members
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _parse(client, chat_invite: types.ChatInvite) -> "ChatPreview":
|
||||||
|
return ChatPreview(
|
||||||
|
title=chat_invite.title,
|
||||||
|
photo=ChatPhoto._parse(client, chat_invite.photo),
|
||||||
|
type=("group" if not chat_invite.channel else
|
||||||
|
"channel" if chat_invite.broadcast else
|
||||||
|
"supergroup"),
|
||||||
|
members_count=chat_invite.participants_count,
|
||||||
|
members=[User._parse(client, user) for user in chat_invite.participants] or None,
|
||||||
|
client=client
|
||||||
|
)
|
||||||
|
|
||||||
|
# TODO: Maybe just merge this object into Chat itself by adding the "members" field.
|
||||||
|
# get_chat can be used as well instead of get_chat_preview
|
Loading…
x
Reference in New Issue
Block a user