Rename Chat base class to Peer

This commit is contained in:
Lonami Exo 2024-03-17 13:14:44 +01:00
parent 031c128fef
commit c95e979119
18 changed files with 68 additions and 67 deletions

View File

@ -25,7 +25,6 @@ from ..types import (
AdminRight, AdminRight,
AlbumBuilder, AlbumBuilder,
AsyncList, AsyncList,
Chat,
ChatLike, ChatLike,
ChatRestriction, ChatRestriction,
Dialog, Dialog,
@ -38,6 +37,7 @@ from ..types import (
OutFileLike, OutFileLike,
Participant, Participant,
PasswordToken, PasswordToken,
Peer,
RecentAction, RecentAction,
User, User,
) )
@ -253,7 +253,7 @@ class Client:
self._chat_hashes = ChatHashCache(None) self._chat_hashes = ChatHashCache(None)
self._last_update_limit_warn: Optional[float] = None self._last_update_limit_warn: Optional[float] = None
self._updates: asyncio.Queue[ self._updates: asyncio.Queue[
tuple[abcs.Update, dict[int, Chat]] tuple[abcs.Update, dict[int, Peer]]
] = asyncio.Queue(maxsize=self._config.update_queue_limit or 0) ] = asyncio.Queue(maxsize=self._config.update_queue_limit or 0)
self._dispatcher: Optional[asyncio.Task[None]] = None self._dispatcher: Optional[asyncio.Task[None]] = None
self._handlers: dict[ self._handlers: dict[
@ -676,11 +676,11 @@ class Client:
async def get_chats( async def get_chats(
self, chats: list[ChatLike] | tuple[ChatLike, ...] self, chats: list[ChatLike] | tuple[ChatLike, ...]
) -> list[Chat]: ) -> list[Peer]:
""" """
Get the latest basic information about the given chats. Get the latest basic information about the given chats.
This method is most commonly used to turn one or more :class:`~types.PackedChat` into the original :class:`~types.Chat`. This method is most commonly used to turn one or more :class:`~types.PackedChat` into the original :class:`~types.Peer`.
This includes users, groups and broadcast channels. This includes users, groups and broadcast channels.
:param chats: :param chats:
@ -1227,12 +1227,12 @@ class Client:
""" """
return await request_login_code(self, phone) return await request_login_code(self, phone)
async def resolve_username(self, username: str) -> Chat: async def resolve_username(self, username: str) -> Peer:
""" """
Resolve a username into a :term:`chat`. Resolve a username into a :term:`chat`.
This method is rather expensive to call. This method is rather expensive to call.
It is recommended to use it once and then :meth:`types.Chat.pack` the result. It is recommended to use it once and then :meth:`types.Peer.pack` the result.
The packed chat can then be used (and re-fetched) more cheaply. The packed chat can then be used (and re-fetched) more cheaply.
:param username: :param username:

View File

@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Literal, Optional, Self
from ...session import PackedChat from ...session import PackedChat
from ...tl import abcs, functions, types from ...tl import abcs, functions, types
from ..types import AsyncList, Chat, ChatLike, Message, build_chat_map from ..types import AsyncList, ChatLike, Message, Peer, build_chat_map
from ..types import buttons as btns from ..types import buttons as btns
from ..types import generate_random_id, parse_message, peer_id from ..types import generate_random_id, parse_message, peer_id
@ -198,7 +198,7 @@ class MessageList(AsyncList[Message]):
def _extend_buffer( def _extend_buffer(
self, client: Client, messages: abcs.messages.Messages self, client: Client, messages: abcs.messages.Messages
) -> dict[int, Chat]: ) -> dict[int, Peer]:
if isinstance(messages, types.messages.MessagesNotModified): if isinstance(messages, types.messages.MessagesNotModified):
self._total = messages.count self._total = messages.count
return {} return {}

View File

@ -8,9 +8,9 @@ from ...tl import abcs, functions, types
from ..types import ( from ..types import (
AsyncList, AsyncList,
Channel, Channel,
Chat,
ChatLike, ChatLike,
Group, Group,
Peer,
User, User,
build_chat_map, build_chat_map,
expand_peer, expand_peer,
@ -52,7 +52,7 @@ def get_contacts(self: Client) -> AsyncList[User]:
return ContactList(self) return ContactList(self)
def resolved_peer_to_chat(client: Client, resolved: abcs.contacts.ResolvedPeer) -> Chat: def resolved_peer_to_chat(client: Client, resolved: abcs.contacts.ResolvedPeer) -> Peer:
assert isinstance(resolved, types.contacts.ResolvedPeer) assert isinstance(resolved, types.contacts.ResolvedPeer)
map = build_chat_map(client, resolved.users, resolved.chats) map = build_chat_map(client, resolved.users, resolved.chats)
@ -62,13 +62,13 @@ def resolved_peer_to_chat(client: Client, resolved: abcs.contacts.ResolvedPeer)
raise ValueError("no matching chat found in response") raise ValueError("no matching chat found in response")
async def resolve_phone(client: Client, phone: str) -> Chat: async def resolve_phone(client: Client, phone: str) -> Peer:
return resolved_peer_to_chat( return resolved_peer_to_chat(
client, await client(functions.contacts.resolve_phone(phone=phone)) client, await client(functions.contacts.resolve_phone(phone=phone))
) )
async def resolve_username(self: Client, username: str) -> Chat: async def resolve_username(self: Client, username: str) -> Peer:
return resolved_peer_to_chat( return resolved_peer_to_chat(
self, await self(functions.contacts.resolve_username(username=username)) self, await self(functions.contacts.resolve_username(username=username))
) )
@ -76,7 +76,7 @@ async def resolve_username(self: Client, username: str) -> Chat:
async def get_chats( async def get_chats(
self: Client, chats: list[ChatLike] | tuple[ChatLike, ...] self: Client, chats: list[ChatLike] | tuple[ChatLike, ...]
) -> list[Chat]: ) -> list[Peer]:
packed_chats: list[PackedChat] = [] packed_chats: list[PackedChat] = []
input_users: list[types.InputUser] = [] input_users: list[types.InputUser] = []
input_chats: list[int] = [] input_chats: list[int] = []

View File

@ -4,7 +4,7 @@ import abc
from typing import TYPE_CHECKING, Optional, Self from typing import TYPE_CHECKING, Optional, Self
from ...tl import abcs from ...tl import abcs
from ..types import Chat, NoPublicConstructor from ..types import NoPublicConstructor, Peer
if TYPE_CHECKING: if TYPE_CHECKING:
from ..client.client import Client from ..client.client import Client
@ -25,7 +25,7 @@ class Event(metaclass=NoPublicConstructor):
@classmethod @classmethod
@abc.abstractmethod @abc.abstractmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
pass pass

View File

@ -3,7 +3,7 @@ from __future__ import annotations
from typing import TYPE_CHECKING, Optional, Self, Sequence from typing import TYPE_CHECKING, Optional, Self, Sequence
from ...tl import abcs, types from ...tl import abcs, types
from ..types import Chat, Message, expand_peer, peer_id from ..types import Message, Peer, expand_peer, peer_id
from .event import Event from .event import Event
if TYPE_CHECKING: if TYPE_CHECKING:
@ -25,7 +25,7 @@ class NewMessage(Event, Message):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance(update, (types.UpdateNewMessage, types.UpdateNewChannelMessage)): if isinstance(update, (types.UpdateNewMessage, types.UpdateNewChannelMessage)):
if isinstance(update.message, types.Message): if isinstance(update.message, types.Message):
@ -47,7 +47,7 @@ class MessageEdited(Event, Message):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance( if isinstance(
update, (types.UpdateEditMessage, types.UpdateEditChannelMessage) update, (types.UpdateEditMessage, types.UpdateEditChannelMessage)
@ -75,7 +75,7 @@ class MessageDeleted(Event):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance(update, types.UpdateDeleteMessages): if isinstance(update, types.UpdateDeleteMessages):
return cls._create(update.messages, None) return cls._create(update.messages, None)
@ -115,7 +115,7 @@ class MessageRead(Event):
| types.UpdateReadChannelInbox | types.UpdateReadChannelInbox
| types.UpdateReadChannelOutbox | types.UpdateReadChannelOutbox
), ),
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> None: ) -> None:
self._client = client self._client = client
self._raw = update self._raw = update
@ -123,7 +123,7 @@ class MessageRead(Event):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance( if isinstance(
update, update,
@ -147,7 +147,7 @@ class MessageRead(Event):
return types.PeerChannel(channel_id=self._raw.channel_id) return types.PeerChannel(channel_id=self._raw.channel_id)
@property @property
def chat(self) -> Chat: def chat(self) -> Peer:
""" """
The :term:`chat` when the messages were read. The :term:`chat` when the messages were read.
""" """

View File

@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Optional, Self
from ...tl import abcs, functions, types from ...tl import abcs, functions, types
from ..client.messages import CherryPickedList from ..client.messages import CherryPickedList
from ..types import Chat, Message from ..types import Message, Peer
from ..types.peer import peer_id from ..types.peer import peer_id
from .event import Event from .event import Event
@ -23,7 +23,7 @@ class ButtonCallback(Event):
self, self,
client: Client, client: Client,
update: types.UpdateBotCallbackQuery, update: types.UpdateBotCallbackQuery,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
): ):
self._client = client self._client = client
self._raw = update self._raw = update
@ -31,7 +31,7 @@ class ButtonCallback(Event):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance(update, types.UpdateBotCallbackQuery) and update.data is not None: if isinstance(update, types.UpdateBotCallbackQuery) and update.data is not None:
return cls._create(client, update, chat_map) return cls._create(client, update, chat_map)
@ -105,7 +105,7 @@ class InlineQuery(Event):
@classmethod @classmethod
def _try_from_update( def _try_from_update(
cls, client: Client, update: abcs.Update, chat_map: dict[int, Chat] cls, client: Client, update: abcs.Update, chat_map: dict[int, Peer]
) -> Optional[Self]: ) -> Optional[Self]:
if isinstance(update, types.UpdateBotInlineQuery): if isinstance(update, types.UpdateBotInlineQuery):
return cls._create(update) return cls._create(update)

View File

@ -27,9 +27,9 @@ from .participant import Participant
from .password_token import PasswordToken from .password_token import PasswordToken
from .peer import ( from .peer import (
Channel, Channel,
Chat,
ChatLike, ChatLike,
Group, Group,
Peer,
User, User,
build_chat_map, build_chat_map,
expand_peer, expand_peer,
@ -44,7 +44,7 @@ __all__ = [
"ChatRestriction", "ChatRestriction",
"CallbackAnswer", "CallbackAnswer",
"Channel", "Channel",
"Chat", "Peer",
"ChatLike", "ChatLike",
"Group", "Group",
"User", "User",

View File

@ -6,7 +6,7 @@ from ...tl import abcs, types
from .draft import Draft from .draft import Draft
from .message import Message from .message import Message
from .meta import NoPublicConstructor from .meta import NoPublicConstructor
from .peer import Chat, peer_id from .peer import Peer, peer_id
if TYPE_CHECKING: if TYPE_CHECKING:
from ..client.client import Client from ..client.client import Client
@ -27,7 +27,7 @@ class Dialog(metaclass=NoPublicConstructor):
self, self,
client: Client, client: Client,
raw: types.Dialog | types.DialogFolder, raw: types.Dialog | types.DialogFolder,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
msg_map: dict[int, Message], msg_map: dict[int, Message],
) -> None: ) -> None:
self._client = client self._client = client
@ -40,14 +40,14 @@ class Dialog(metaclass=NoPublicConstructor):
cls, cls,
client: Client, client: Client,
dialog: abcs.Dialog, dialog: abcs.Dialog,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
msg_map: dict[int, Message], msg_map: dict[int, Message],
) -> Self: ) -> Self:
assert isinstance(dialog, (types.Dialog, types.DialogFolder)) assert isinstance(dialog, (types.Dialog, types.DialogFolder))
return cls._create(client, dialog, chat_map, msg_map) return cls._create(client, dialog, chat_map, msg_map)
@property @property
def chat(self) -> Chat: def chat(self) -> Peer:
""" """
The chat where messages are sent in this dialog. The chat where messages are sent in this dialog.
""" """

View File

@ -8,7 +8,7 @@ from ...tl import abcs, functions, types
from ..parsers import generate_html_message, generate_markdown_message from ..parsers import generate_html_message, generate_markdown_message
from .message import Message, generate_random_id from .message import Message, generate_random_id
from .meta import NoPublicConstructor from .meta import NoPublicConstructor
from .peer import Chat, expand_peer, peer_id from .peer import Peer, expand_peer, peer_id
if TYPE_CHECKING: if TYPE_CHECKING:
from ..client.client import Client from ..client.client import Client
@ -27,7 +27,7 @@ class Draft(metaclass=NoPublicConstructor):
peer: abcs.Peer, peer: abcs.Peer,
top_msg_id: Optional[int], top_msg_id: Optional[int],
raw: abcs.DraftMessage, raw: abcs.DraftMessage,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> None: ) -> None:
assert isinstance(raw, (types.DraftMessage, types.DraftMessageEmpty)) assert isinstance(raw, (types.DraftMessage, types.DraftMessageEmpty))
self._client = client self._client = client
@ -38,7 +38,7 @@ class Draft(metaclass=NoPublicConstructor):
@classmethod @classmethod
def _from_raw_update( def _from_raw_update(
cls, client: Client, draft: types.UpdateDraftMessage, chat_map: dict[int, Chat] cls, client: Client, draft: types.UpdateDraftMessage, chat_map: dict[int, Peer]
) -> Self: ) -> Self:
return cls._create(client, draft.peer, draft.top_msg_id, draft.draft, chat_map) return cls._create(client, draft.peer, draft.top_msg_id, draft.draft, chat_map)
@ -49,12 +49,12 @@ class Draft(metaclass=NoPublicConstructor):
peer: abcs.Peer, peer: abcs.Peer,
top_msg_id: int, top_msg_id: int,
draft: abcs.DraftMessage, draft: abcs.DraftMessage,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> Self: ) -> Self:
return cls._create(client, peer, top_msg_id, draft, chat_map) return cls._create(client, peer, top_msg_id, draft, chat_map)
@property @property
def chat(self) -> Chat: def chat(self) -> Peer:
""" """
The chat where the draft is saved. The chat where the draft is saved.

View File

@ -14,7 +14,7 @@ from ..parsers import (
from .buttons import Button, as_concrete_row, create_button from .buttons import Button, as_concrete_row, create_button
from .file import File from .file import File
from .meta import NoPublicConstructor from .meta import NoPublicConstructor
from .peer import Chat, ChatLike, expand_peer, peer_id from .peer import ChatLike, Peer, expand_peer, peer_id
if TYPE_CHECKING: if TYPE_CHECKING:
from ..client.client import Client from ..client.client import Client
@ -58,7 +58,7 @@ class Message(metaclass=NoPublicConstructor):
""" """
def __init__( def __init__(
self, client: Client, message: abcs.Message, chat_map: dict[int, Chat] self, client: Client, message: abcs.Message, chat_map: dict[int, Peer]
) -> None: ) -> None:
assert isinstance( assert isinstance(
message, (types.Message, types.MessageService, types.MessageEmpty) message, (types.Message, types.MessageService, types.MessageEmpty)
@ -69,7 +69,7 @@ class Message(metaclass=NoPublicConstructor):
@classmethod @classmethod
def _from_raw( def _from_raw(
cls, client: Client, message: abcs.Message, chat_map: dict[int, Chat] cls, client: Client, message: abcs.Message, chat_map: dict[int, Peer]
) -> Self: ) -> Self:
return cls._create(client, message, chat_map) return cls._create(client, message, chat_map)
@ -77,7 +77,7 @@ class Message(metaclass=NoPublicConstructor):
def _from_defaults( def _from_defaults(
cls, cls,
client: Client, client: Client,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
id: int, id: int,
peer_id: abcs.Peer, peer_id: abcs.Peer,
date: int, date: int,
@ -184,7 +184,7 @@ class Message(metaclass=NoPublicConstructor):
return adapt_date(getattr(self._raw, "date", None)) return adapt_date(getattr(self._raw, "date", None))
@property @property
def chat(self) -> Chat: def chat(self) -> Peer:
""" """
The :term:`chat` when the message was sent. The :term:`chat` when the message was sent.
""" """
@ -197,7 +197,7 @@ class Message(metaclass=NoPublicConstructor):
return self._chat_map[pid] return self._chat_map[pid]
@property @property
def sender(self) -> Optional[Chat]: def sender(self) -> Optional[Peer]:
""" """
The :term:`chat` that sent the message. The :term:`chat` that sent the message.
@ -502,7 +502,7 @@ class Message(metaclass=NoPublicConstructor):
def build_msg_map( def build_msg_map(
client: Client, messages: Sequence[abcs.Message], chat_map: dict[int, Chat] client: Client, messages: Sequence[abcs.Message], chat_map: dict[int, Peer]
) -> dict[int, Message]: ) -> dict[int, Message]:
return { return {
msg.id: msg msg.id: msg

View File

@ -8,7 +8,7 @@ from ...tl import abcs, types
from .admin_right import AdminRight from .admin_right import AdminRight
from .chat_restriction import ChatRestriction from .chat_restriction import ChatRestriction
from .meta import NoPublicConstructor from .meta import NoPublicConstructor
from .peer import Chat, User, peer_id from .peer import Peer, User, peer_id
if TYPE_CHECKING: if TYPE_CHECKING:
from ..client.client import Client from ..client.client import Client
@ -36,7 +36,7 @@ class Participant(metaclass=NoPublicConstructor):
| types.ChatParticipantCreator | types.ChatParticipantCreator
| types.ChatParticipantAdmin | types.ChatParticipantAdmin
), ),
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> None: ) -> None:
self._client = client self._client = client
self._chat = chat self._chat = chat
@ -49,7 +49,7 @@ class Participant(metaclass=NoPublicConstructor):
client: Client, client: Client,
chat: PackedChat, chat: PackedChat,
participant: abcs.ChannelParticipant, participant: abcs.ChannelParticipant,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> Self: ) -> Self:
if isinstance( if isinstance(
participant, participant,
@ -72,7 +72,7 @@ class Participant(metaclass=NoPublicConstructor):
client: Client, client: Client,
chat: PackedChat, chat: PackedChat,
participant: abcs.ChatParticipant, participant: abcs.ChatParticipant,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> Self: ) -> Self:
if isinstance( if isinstance(
participant, participant,
@ -129,7 +129,7 @@ class Participant(metaclass=NoPublicConstructor):
return None return None
@property @property
def banned(self) -> Optional[Chat]: def banned(self) -> Optional[Peer]:
""" """
The banned participant. The banned participant.
@ -141,7 +141,7 @@ class Participant(metaclass=NoPublicConstructor):
return None return None
@property @property
def left(self) -> Optional[Chat]: def left(self) -> Optional[Peer]:
""" """
The participant that has left the group. The participant that has left the group.

View File

@ -9,18 +9,18 @@ from ....session import PackedChat
from ....tl import abcs, types from ....tl import abcs, types
from .channel import Channel from .channel import Channel
from .group import Group from .group import Group
from .peer import Chat from .peer import Peer
from .user import User from .user import User
if TYPE_CHECKING: if TYPE_CHECKING:
from ...client.client import Client from ...client.client import Client
ChatLike = Chat | PackedChat | int | str ChatLike = Peer | PackedChat | int | str
def build_chat_map( def build_chat_map(
client: Client, users: Sequence[abcs.User], chats: Sequence[abcs.Chat] client: Client, users: Sequence[abcs.User], chats: Sequence[abcs.Chat]
) -> dict[int, Chat]: ) -> dict[int, Peer]:
users_iter = (User._from_raw(u) for u in users) users_iter = (User._from_raw(u) for u in users)
chats_iter = ( chats_iter = (
( (
@ -31,7 +31,7 @@ def build_chat_map(
for c in chats for c in chats
) )
result: dict[int, Chat] = {c.id: c for c in itertools.chain(users_iter, chats_iter)} result: dict[int, Peer] = {c.id: c for c in itertools.chain(users_iter, chats_iter)}
if len(result) != len(users) + len(chats): if len(result) != len(users) + len(chats):
# The fabled ID collision between different chat types. # The fabled ID collision between different chat types.
@ -66,7 +66,7 @@ def peer_id(peer: abcs.Peer) -> int:
raise RuntimeError("unexpected case") raise RuntimeError("unexpected case")
def expand_peer(client: Client, peer: abcs.Peer, *, broadcast: Optional[bool]) -> Chat: def expand_peer(client: Client, peer: abcs.Peer, *, broadcast: Optional[bool]) -> Peer:
if isinstance(peer, types.PeerUser): if isinstance(peer, types.PeerUser):
return User._from_raw(types.UserEmpty(id=peer.user_id)) return User._from_raw(types.UserEmpty(id=peer.user_id))
elif isinstance(peer, types.PeerChat): elif isinstance(peer, types.PeerChat):
@ -93,4 +93,4 @@ def expand_peer(client: Client, peer: abcs.Peer, *, broadcast: Optional[bool]) -
raise RuntimeError("unexpected case") raise RuntimeError("unexpected case")
__all__ = ["Channel", "Chat", "Group", "User"] __all__ = ["Channel", "Peer", "Group", "User"]

View File

@ -3,10 +3,10 @@ from typing import Optional, Self
from ....session import PackedChat, PackedType from ....session import PackedChat, PackedType
from ....tl import abcs, types from ....tl import abcs, types
from ..meta import NoPublicConstructor from ..meta import NoPublicConstructor
from .peer import Chat from .peer import Peer
class Channel(Chat, metaclass=NoPublicConstructor): class Channel(Peer, metaclass=NoPublicConstructor):
""" """
A broadcast channel. A broadcast channel.

View File

@ -7,13 +7,13 @@ from ....session import PackedChat, PackedType
from ....tl import abcs, types from ....tl import abcs, types
from ..chat_restriction import ChatRestriction from ..chat_restriction import ChatRestriction
from ..meta import NoPublicConstructor from ..meta import NoPublicConstructor
from .peer import Chat from .peer import Peer
if TYPE_CHECKING: if TYPE_CHECKING:
from ...client.client import Client from ...client.client import Client
class Group(Chat, metaclass=NoPublicConstructor): class Group(Peer, metaclass=NoPublicConstructor):
""" """
A small group or supergroup. A small group or supergroup.

View File

@ -4,7 +4,7 @@ from typing import Optional
from ....session import PackedChat from ....session import PackedChat
class Chat(abc.ABC): class Peer(abc.ABC):
""" """
The base class for all chat types. The base class for all chat types.

View File

@ -3,10 +3,10 @@ from typing import Optional, Self
from ....session import PackedChat, PackedType from ....session import PackedChat, PackedType
from ....tl import abcs, types from ....tl import abcs, types
from ..meta import NoPublicConstructor from ..meta import NoPublicConstructor
from .peer import Chat from .peer import Peer
class User(Chat, metaclass=NoPublicConstructor): class User(Peer, metaclass=NoPublicConstructor):
""" """
A user, representing either a bot account or an account created with a phone number. A user, representing either a bot account or an account created with a phone number.

View File

@ -1,6 +1,6 @@
from ...tl import abcs, types from ...tl import abcs, types
from .meta import NoPublicConstructor from .meta import NoPublicConstructor
from .peer import Chat from .peer import Peer
class RecentAction(metaclass=NoPublicConstructor): class RecentAction(metaclass=NoPublicConstructor):
@ -15,7 +15,7 @@ class RecentAction(metaclass=NoPublicConstructor):
def __init__( def __init__(
self, self,
event: abcs.ChannelAdminLogEvent, event: abcs.ChannelAdminLogEvent,
chat_map: dict[int, Chat], chat_map: dict[int, Peer],
) -> None: ) -> None:
assert isinstance(event, types.ChannelAdminLogEvent) assert isinstance(event, types.ChannelAdminLogEvent)
self._raw = event self._raw = event

View File

@ -1,13 +1,13 @@
""" """
Classes for the various objects the library returns. Classes for the various objects the library returns.
""" """
from .._impl.client.types import ( from .._impl.client.types import (
AdminRight, AdminRight,
AlbumBuilder, AlbumBuilder,
AsyncList, AsyncList,
CallbackAnswer, CallbackAnswer,
Channel, Channel,
Chat,
ChatRestriction, ChatRestriction,
Dialog, Dialog,
Draft, Draft,
@ -18,6 +18,7 @@ from .._impl.client.types import (
Message, Message,
Participant, Participant,
PasswordToken, PasswordToken,
Peer,
RecentAction, RecentAction,
User, User,
) )
@ -30,7 +31,7 @@ __all__ = [
"AsyncList", "AsyncList",
"CallbackAnswer", "CallbackAnswer",
"Channel", "Channel",
"Chat", "Peer",
"ChatRestriction", "ChatRestriction",
"Dialog", "Dialog",
"Draft", "Draft",