8850 lines
313 KiB
Python
8850 lines
313 KiB
Python
"""File generated by TLObjects' generator. All changes will be ERASED"""
|
|
from ...tl.tlobject import TLObject
|
|
from ...tl.tlobject import TLRequest
|
|
from typing import Optional, List, Union, TYPE_CHECKING
|
|
import os
|
|
import struct
|
|
from datetime import datetime
|
|
if TYPE_CHECKING:
|
|
from ...tl.types import TypeChatBannedRights, TypeChatReactions, TypeDataJSON, TypeDialogFilter, TypeInlineBotSwitchPM, TypeInlineBotWebView, TypeInputBotApp, TypeInputBotInlineMessageID, TypeInputBotInlineResult, TypeInputChatPhoto, TypeInputCheckPasswordSRP, TypeInputDialogPeer, TypeInputDocument, TypeInputEncryptedChat, TypeInputEncryptedFile, TypeInputFile, TypeInputGeoPoint, TypeInputMedia, TypeInputMessage, TypeInputPeer, TypeInputQuickReplyShortcut, TypeInputReplyTo, TypeInputSingleMedia, TypeInputStickerSet, TypeInputStickeredMedia, TypeInputUser, TypeInputWallPaper, TypeMessageEntity, TypeMessagesFilter, TypeReaction, TypeReplyMarkup, TypeReportReason, TypeSendMessageAction, TypeShippingOption, TypeTextWithEntities, TypeWallPaperSettings
|
|
|
|
|
|
|
|
class AcceptEncryptionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3dbc0415
|
|
SUBCLASS_OF_ID = 0x6d28a37a
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', g_b: bytes, key_fingerprint: int):
|
|
"""
|
|
:returns EncryptedChat: Instance of either EncryptedChatEmpty, EncryptedChatWaiting, EncryptedChatRequested, EncryptedChat, EncryptedChatDiscarded.
|
|
"""
|
|
self.peer = peer
|
|
self.g_b = g_b
|
|
self.key_fingerprint = key_fingerprint
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'AcceptEncryptionRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'g_b': self.g_b,
|
|
'key_fingerprint': self.key_fingerprint
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x15\x04\xbc=',
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.g_b),
|
|
struct.pack('<q', self.key_fingerprint),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_g_b = reader.tgread_bytes()
|
|
_key_fingerprint = reader.read_long()
|
|
return cls(peer=_peer, g_b=_g_b, key_fingerprint=_key_fingerprint)
|
|
|
|
|
|
class AcceptUrlAuthRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb12c7125
|
|
SUBCLASS_OF_ID = 0x7765cb1e
|
|
|
|
def __init__(self, write_allowed: Optional[bool]=None, peer: Optional['TypeInputPeer']=None, msg_id: Optional[int]=None, button_id: Optional[int]=None, url: Optional[str]=None):
|
|
"""
|
|
:returns UrlAuthResult: Instance of either UrlAuthResultRequest, UrlAuthResultAccepted, UrlAuthResultDefault.
|
|
"""
|
|
self.write_allowed = write_allowed
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.button_id = button_id
|
|
self.url = url
|
|
|
|
async def resolve(self, client, utils):
|
|
if self.peer:
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'AcceptUrlAuthRequest',
|
|
'write_allowed': self.write_allowed,
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'button_id': self.button_id,
|
|
'url': self.url
|
|
}
|
|
|
|
def _bytes(self):
|
|
assert ((self.peer or self.peer is not None) and (self.msg_id or self.msg_id is not None) and (self.button_id or self.button_id is not None)) or ((self.peer is None or self.peer is False) and (self.msg_id is None or self.msg_id is False) and (self.button_id is None or self.button_id is False)), 'peer, msg_id, button_id parameters must all be False-y (like None) or all me True-y'
|
|
return b''.join((
|
|
b'%q,\xb1',
|
|
struct.pack('<I', (0 if self.write_allowed is None or self.write_allowed is False else 1) | (0 if self.peer is None or self.peer is False else 2) | (0 if self.msg_id is None or self.msg_id is False else 2) | (0 if self.button_id is None or self.button_id is False else 2) | (0 if self.url is None or self.url is False else 4)),
|
|
b'' if self.peer is None or self.peer is False else (self.peer._bytes()),
|
|
b'' if self.msg_id is None or self.msg_id is False else (struct.pack('<i', self.msg_id)),
|
|
b'' if self.button_id is None or self.button_id is False else (struct.pack('<i', self.button_id)),
|
|
b'' if self.url is None or self.url is False else (self.serialize_bytes(self.url)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_write_allowed = bool(flags & 1)
|
|
if flags & 2:
|
|
_peer = reader.tgread_object()
|
|
else:
|
|
_peer = None
|
|
if flags & 2:
|
|
_msg_id = reader.read_int()
|
|
else:
|
|
_msg_id = None
|
|
if flags & 2:
|
|
_button_id = reader.read_int()
|
|
else:
|
|
_button_id = None
|
|
if flags & 4:
|
|
_url = reader.tgread_string()
|
|
else:
|
|
_url = None
|
|
return cls(write_allowed=_write_allowed, peer=_peer, msg_id=_msg_id, button_id=_button_id, url=_url)
|
|
|
|
|
|
class AddChatUserRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xcbc6d107
|
|
SUBCLASS_OF_ID = 0x3dbe90a1
|
|
|
|
def __init__(self, chat_id: int, user_id: 'TypeInputUser', fwd_limit: int):
|
|
"""
|
|
:returns messages.InvitedUsers: Instance of InvitedUsers.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.user_id = user_id
|
|
self.fwd_limit = fwd_limit
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'AddChatUserRequest',
|
|
'chat_id': self.chat_id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'fwd_limit': self.fwd_limit
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x07\xd1\xc6\xcb',
|
|
struct.pack('<q', self.chat_id),
|
|
self.user_id._bytes(),
|
|
struct.pack('<i', self.fwd_limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
_user_id = reader.tgread_object()
|
|
_fwd_limit = reader.read_int()
|
|
return cls(chat_id=_chat_id, user_id=_user_id, fwd_limit=_fwd_limit)
|
|
|
|
|
|
class CheckChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3eadb1bb
|
|
SUBCLASS_OF_ID = 0x4561736
|
|
|
|
def __init__(self, hash: str):
|
|
"""
|
|
:returns ChatInvite: Instance of either ChatInviteAlready, ChatInvite, ChatInvitePeek.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'CheckChatInviteRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xbb\xb1\xad>',
|
|
self.serialize_bytes(self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.tgread_string()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class CheckHistoryImportRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x43fe19f3
|
|
SUBCLASS_OF_ID = 0x5bb2720b
|
|
|
|
def __init__(self, import_head: str):
|
|
"""
|
|
:returns messages.HistoryImportParsed: Instance of HistoryImportParsed.
|
|
"""
|
|
self.import_head = import_head
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'CheckHistoryImportRequest',
|
|
'import_head': self.import_head
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf3\x19\xfeC',
|
|
self.serialize_bytes(self.import_head),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_import_head = reader.tgread_string()
|
|
return cls(import_head=_import_head)
|
|
|
|
|
|
class CheckHistoryImportPeerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5dc60f03
|
|
SUBCLASS_OF_ID = 0xb84bb337
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns messages.CheckedHistoryImportPeer: Instance of CheckedHistoryImportPeer.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'CheckHistoryImportPeerRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x03\x0f\xc6]',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class CheckQuickReplyShortcutRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf1d0fbd3
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, shortcut: str):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.shortcut = shortcut
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'CheckQuickReplyShortcutRequest',
|
|
'shortcut': self.shortcut
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd3\xfb\xd0\xf1',
|
|
self.serialize_bytes(self.shortcut),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_shortcut = reader.tgread_string()
|
|
return cls(shortcut=_shortcut)
|
|
|
|
|
|
class ClearAllDraftsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7e58ee9c
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ClearAllDraftsRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x9c\xeeX~',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class ClearRecentReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9dfeefb4
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ClearRecentReactionsRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xb4\xef\xfe\x9d',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class ClearRecentStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8999602d
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, attached: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.attached = attached
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ClearRecentStickersRequest',
|
|
'attached': self.attached
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'-`\x99\x89',
|
|
struct.pack('<I', (0 if self.attached is None or self.attached is False else 1)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_attached = bool(flags & 1)
|
|
return cls(attached=_attached)
|
|
|
|
|
|
class CreateChatRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x92ceddd4
|
|
SUBCLASS_OF_ID = 0x3dbe90a1
|
|
|
|
def __init__(self, users: List['TypeInputUser'], title: str, ttl_period: Optional[int]=None):
|
|
"""
|
|
:returns messages.InvitedUsers: Instance of InvitedUsers.
|
|
"""
|
|
self.users = users
|
|
self.title = title
|
|
self.ttl_period = ttl_period
|
|
|
|
async def resolve(self, client, utils):
|
|
_tmp = []
|
|
for _x in self.users:
|
|
_tmp.append(utils.get_input_user(await client.get_input_entity(_x)))
|
|
|
|
self.users = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'CreateChatRequest',
|
|
'users': [] if self.users is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.users],
|
|
'title': self.title,
|
|
'ttl_period': self.ttl_period
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd4\xdd\xce\x92',
|
|
struct.pack('<I', (0 if self.ttl_period is None or self.ttl_period is False else 1)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.users)),b''.join(x._bytes() for x in self.users),
|
|
self.serialize_bytes(self.title),
|
|
b'' if self.ttl_period is None or self.ttl_period is False else (struct.pack('<i', self.ttl_period)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
reader.read_int()
|
|
_users = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_users.append(_x)
|
|
|
|
_title = reader.tgread_string()
|
|
if flags & 1:
|
|
_ttl_period = reader.read_int()
|
|
else:
|
|
_ttl_period = None
|
|
return cls(users=_users, title=_title, ttl_period=_ttl_period)
|
|
|
|
|
|
class DeleteChatRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5bd0ee50
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, chat_id: int):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.chat_id = chat_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteChatRequest',
|
|
'chat_id': self.chat_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'P\xee\xd0[',
|
|
struct.pack('<q', self.chat_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
return cls(chat_id=_chat_id)
|
|
|
|
|
|
class DeleteChatUserRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa2185cab
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, chat_id: int, user_id: 'TypeInputUser', revoke_history: Optional[bool]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.user_id = user_id
|
|
self.revoke_history = revoke_history
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteChatUserRequest',
|
|
'chat_id': self.chat_id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'revoke_history': self.revoke_history
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xab\\\x18\xa2',
|
|
struct.pack('<I', (0 if self.revoke_history is None or self.revoke_history is False else 1)),
|
|
struct.pack('<q', self.chat_id),
|
|
self.user_id._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_revoke_history = bool(flags & 1)
|
|
_chat_id = reader.read_long()
|
|
_user_id = reader.tgread_object()
|
|
return cls(chat_id=_chat_id, user_id=_user_id, revoke_history=_revoke_history)
|
|
|
|
|
|
class DeleteExportedChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd464a42b
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', link: str):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.link = link
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteExportedChatInviteRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'link': self.link
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'+\xa4d\xd4',
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.link),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_link = reader.tgread_string()
|
|
return cls(peer=_peer, link=_link)
|
|
|
|
|
|
class DeleteFactCheckRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd1da940c
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteFactCheckRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x0c\x94\xda\xd1',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class DeleteHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb08f922a
|
|
SUBCLASS_OF_ID = 0x2c49c116
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', max_id: int, just_clear: Optional[bool]=None, revoke: Optional[bool]=None, min_date: Optional[datetime]=None, max_date: Optional[datetime]=None):
|
|
"""
|
|
:returns messages.AffectedHistory: Instance of AffectedHistory.
|
|
"""
|
|
self.peer = peer
|
|
self.max_id = max_id
|
|
self.just_clear = just_clear
|
|
self.revoke = revoke
|
|
self.min_date = min_date
|
|
self.max_date = max_date
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'max_id': self.max_id,
|
|
'just_clear': self.just_clear,
|
|
'revoke': self.revoke,
|
|
'min_date': self.min_date,
|
|
'max_date': self.max_date
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'*\x92\x8f\xb0',
|
|
struct.pack('<I', (0 if self.just_clear is None or self.just_clear is False else 1) | (0 if self.revoke is None or self.revoke is False else 2) | (0 if self.min_date is None or self.min_date is False else 4) | (0 if self.max_date is None or self.max_date is False else 8)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.max_id),
|
|
b'' if self.min_date is None or self.min_date is False else (self.serialize_datetime(self.min_date)),
|
|
b'' if self.max_date is None or self.max_date is False else (self.serialize_datetime(self.max_date)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_just_clear = bool(flags & 1)
|
|
_revoke = bool(flags & 2)
|
|
_peer = reader.tgread_object()
|
|
_max_id = reader.read_int()
|
|
if flags & 4:
|
|
_min_date = reader.tgread_date()
|
|
else:
|
|
_min_date = None
|
|
if flags & 8:
|
|
_max_date = reader.tgread_date()
|
|
else:
|
|
_max_date = None
|
|
return cls(peer=_peer, max_id=_max_id, just_clear=_just_clear, revoke=_revoke, min_date=_min_date, max_date=_max_date)
|
|
|
|
|
|
class DeleteMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe58e95d2
|
|
SUBCLASS_OF_ID = 0xced3c06e
|
|
|
|
def __init__(self, id: List[int], revoke: Optional[bool]=None):
|
|
"""
|
|
:returns messages.AffectedMessages: Instance of AffectedMessages.
|
|
"""
|
|
self.id = id
|
|
self.revoke = revoke
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteMessagesRequest',
|
|
'id': [] if self.id is None else self.id[:],
|
|
'revoke': self.revoke
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd2\x95\x8e\xe5',
|
|
struct.pack('<I', (0 if self.revoke is None or self.revoke is False else 1)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_revoke = bool(flags & 1)
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(id=_id, revoke=_revoke)
|
|
|
|
|
|
class DeletePhoneCallHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf9cbe409
|
|
SUBCLASS_OF_ID = 0xf817652e
|
|
|
|
def __init__(self, revoke: Optional[bool]=None):
|
|
"""
|
|
:returns messages.AffectedFoundMessages: Instance of AffectedFoundMessages.
|
|
"""
|
|
self.revoke = revoke
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeletePhoneCallHistoryRequest',
|
|
'revoke': self.revoke
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\t\xe4\xcb\xf9',
|
|
struct.pack('<I', (0 if self.revoke is None or self.revoke is False else 1)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_revoke = bool(flags & 1)
|
|
return cls(revoke=_revoke)
|
|
|
|
|
|
class DeleteQuickReplyMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe105e910
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, shortcut_id: int, id: List[int]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.shortcut_id = shortcut_id
|
|
self.id = id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteQuickReplyMessagesRequest',
|
|
'shortcut_id': self.shortcut_id,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x10\xe9\x05\xe1',
|
|
struct.pack('<i', self.shortcut_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_shortcut_id = reader.read_int()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(shortcut_id=_shortcut_id, id=_id)
|
|
|
|
|
|
class DeleteQuickReplyShortcutRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3cc04740
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, shortcut_id: int):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.shortcut_id = shortcut_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteQuickReplyShortcutRequest',
|
|
'shortcut_id': self.shortcut_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'@G\xc0<',
|
|
struct.pack('<i', self.shortcut_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_shortcut_id = reader.read_int()
|
|
return cls(shortcut_id=_shortcut_id)
|
|
|
|
|
|
class DeleteRevokedExportedChatInvitesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x56987bd5
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', admin_id: 'TypeInputUser'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.admin_id = admin_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.admin_id = utils.get_input_user(await client.get_input_entity(self.admin_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteRevokedExportedChatInvitesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'admin_id': self.admin_id.to_dict() if isinstance(self.admin_id, TLObject) else self.admin_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd5{\x98V',
|
|
self.peer._bytes(),
|
|
self.admin_id._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_admin_id = reader.tgread_object()
|
|
return cls(peer=_peer, admin_id=_admin_id)
|
|
|
|
|
|
class DeleteSavedHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6e98102b
|
|
SUBCLASS_OF_ID = 0x2c49c116
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', max_id: int, min_date: Optional[datetime]=None, max_date: Optional[datetime]=None):
|
|
"""
|
|
:returns messages.AffectedHistory: Instance of AffectedHistory.
|
|
"""
|
|
self.peer = peer
|
|
self.max_id = max_id
|
|
self.min_date = min_date
|
|
self.max_date = max_date
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteSavedHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'max_id': self.max_id,
|
|
'min_date': self.min_date,
|
|
'max_date': self.max_date
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'+\x10\x98n',
|
|
struct.pack('<I', (0 if self.min_date is None or self.min_date is False else 4) | (0 if self.max_date is None or self.max_date is False else 8)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.max_id),
|
|
b'' if self.min_date is None or self.min_date is False else (self.serialize_datetime(self.min_date)),
|
|
b'' if self.max_date is None or self.max_date is False else (self.serialize_datetime(self.max_date)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
_max_id = reader.read_int()
|
|
if flags & 4:
|
|
_min_date = reader.tgread_date()
|
|
else:
|
|
_min_date = None
|
|
if flags & 8:
|
|
_max_date = reader.tgread_date()
|
|
else:
|
|
_max_date = None
|
|
return cls(peer=_peer, max_id=_max_id, min_date=_min_date, max_date=_max_date)
|
|
|
|
|
|
class DeleteScheduledMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x59ae2b16
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DeleteScheduledMessagesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x16+\xaeY',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class DiscardEncryptionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf393aea0
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, chat_id: int, delete_history: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.delete_history = delete_history
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'DiscardEncryptionRequest',
|
|
'chat_id': self.chat_id,
|
|
'delete_history': self.delete_history
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa0\xae\x93\xf3',
|
|
struct.pack('<I', (0 if self.delete_history is None or self.delete_history is False else 1)),
|
|
struct.pack('<i', self.chat_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_delete_history = bool(flags & 1)
|
|
_chat_id = reader.read_int()
|
|
return cls(chat_id=_chat_id, delete_history=_delete_history)
|
|
|
|
|
|
class EditChatAboutRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xdef60797
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', about: str):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.about = about
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditChatAboutRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'about': self.about
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x97\x07\xf6\xde',
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.about),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_about = reader.tgread_string()
|
|
return cls(peer=_peer, about=_about)
|
|
|
|
|
|
class EditChatAdminRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa85bd1c2
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, chat_id: int, user_id: 'TypeInputUser', is_admin: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.user_id = user_id
|
|
self.is_admin = is_admin
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditChatAdminRequest',
|
|
'chat_id': self.chat_id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'is_admin': self.is_admin
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc2\xd1[\xa8',
|
|
struct.pack('<q', self.chat_id),
|
|
self.user_id._bytes(),
|
|
b'\xb5ur\x99' if self.is_admin else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
_user_id = reader.tgread_object()
|
|
_is_admin = reader.tgread_bool()
|
|
return cls(chat_id=_chat_id, user_id=_user_id, is_admin=_is_admin)
|
|
|
|
|
|
class EditChatDefaultBannedRightsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa5866b41
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', banned_rights: 'TypeChatBannedRights'):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.banned_rights = banned_rights
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditChatDefaultBannedRightsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'banned_rights': self.banned_rights.to_dict() if isinstance(self.banned_rights, TLObject) else self.banned_rights
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'Ak\x86\xa5',
|
|
self.peer._bytes(),
|
|
self.banned_rights._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_banned_rights = reader.tgread_object()
|
|
return cls(peer=_peer, banned_rights=_banned_rights)
|
|
|
|
|
|
class EditChatPhotoRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x35ddd674
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, chat_id: int, photo: 'TypeInputChatPhoto'):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.photo = photo
|
|
|
|
async def resolve(self, client, utils):
|
|
self.photo = utils.get_input_chat_photo(self.photo)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditChatPhotoRequest',
|
|
'chat_id': self.chat_id,
|
|
'photo': self.photo.to_dict() if isinstance(self.photo, TLObject) else self.photo
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b't\xd6\xdd5',
|
|
struct.pack('<q', self.chat_id),
|
|
self.photo._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
_photo = reader.tgread_object()
|
|
return cls(chat_id=_chat_id, photo=_photo)
|
|
|
|
|
|
class EditChatTitleRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x73783ffd
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, chat_id: int, title: str):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.chat_id = chat_id
|
|
self.title = title
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditChatTitleRequest',
|
|
'chat_id': self.chat_id,
|
|
'title': self.title
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xfd?xs',
|
|
struct.pack('<q', self.chat_id),
|
|
self.serialize_bytes(self.title),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
_title = reader.tgread_string()
|
|
return cls(chat_id=_chat_id, title=_title)
|
|
|
|
|
|
class EditExportedChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbdca2f75
|
|
SUBCLASS_OF_ID = 0x82dcd4ca
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', link: str, revoked: Optional[bool]=None, expire_date: Optional[datetime]=None, usage_limit: Optional[int]=None, request_needed: Optional[bool]=None, title: Optional[str]=None):
|
|
"""
|
|
:returns messages.ExportedChatInvite: Instance of either ExportedChatInvite, ExportedChatInviteReplaced.
|
|
"""
|
|
self.peer = peer
|
|
self.link = link
|
|
self.revoked = revoked
|
|
self.expire_date = expire_date
|
|
self.usage_limit = usage_limit
|
|
self.request_needed = request_needed
|
|
self.title = title
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditExportedChatInviteRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'link': self.link,
|
|
'revoked': self.revoked,
|
|
'expire_date': self.expire_date,
|
|
'usage_limit': self.usage_limit,
|
|
'request_needed': self.request_needed,
|
|
'title': self.title
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'u/\xca\xbd',
|
|
struct.pack('<I', (0 if self.revoked is None or self.revoked is False else 4) | (0 if self.expire_date is None or self.expire_date is False else 1) | (0 if self.usage_limit is None or self.usage_limit is False else 2) | (0 if self.request_needed is None else 8) | (0 if self.title is None or self.title is False else 16)),
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.link),
|
|
b'' if self.expire_date is None or self.expire_date is False else (self.serialize_datetime(self.expire_date)),
|
|
b'' if self.usage_limit is None or self.usage_limit is False else (struct.pack('<i', self.usage_limit)),
|
|
b'' if self.request_needed is None else (b'\xb5ur\x99' if self.request_needed else b'7\x97y\xbc'),
|
|
b'' if self.title is None or self.title is False else (self.serialize_bytes(self.title)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_revoked = bool(flags & 4)
|
|
_peer = reader.tgread_object()
|
|
_link = reader.tgread_string()
|
|
if flags & 1:
|
|
_expire_date = reader.tgread_date()
|
|
else:
|
|
_expire_date = None
|
|
if flags & 2:
|
|
_usage_limit = reader.read_int()
|
|
else:
|
|
_usage_limit = None
|
|
if flags & 8:
|
|
_request_needed = reader.tgread_bool()
|
|
else:
|
|
_request_needed = None
|
|
if flags & 16:
|
|
_title = reader.tgread_string()
|
|
else:
|
|
_title = None
|
|
return cls(peer=_peer, link=_link, revoked=_revoked, expire_date=_expire_date, usage_limit=_usage_limit, request_needed=_request_needed, title=_title)
|
|
|
|
|
|
class EditFactCheckRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x589ee75
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, text: 'TypeTextWithEntities'):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.text = text
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditFactCheckRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'text': self.text.to_dict() if isinstance(self.text, TLObject) else self.text
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'u\xee\x89\x05',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
self.text._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
_text = reader.tgread_object()
|
|
return cls(peer=_peer, msg_id=_msg_id, text=_text)
|
|
|
|
|
|
class EditInlineBotMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x83557dba
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: 'TypeInputBotInlineMessageID', no_webpage: Optional[bool]=None, invert_media: Optional[bool]=None, message: Optional[str]=None, media: Optional['TypeInputMedia']=None, reply_markup: Optional['TypeReplyMarkup']=None, entities: Optional[List['TypeMessageEntity']]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.no_webpage = no_webpage
|
|
self.invert_media = invert_media
|
|
self.message = message
|
|
self.media = media
|
|
self.reply_markup = reply_markup
|
|
self.entities = entities
|
|
|
|
async def resolve(self, client, utils):
|
|
if self.media:
|
|
self.media = utils.get_input_media(self.media)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditInlineBotMessageRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'no_webpage': self.no_webpage,
|
|
'invert_media': self.invert_media,
|
|
'message': self.message,
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media,
|
|
'reply_markup': self.reply_markup.to_dict() if isinstance(self.reply_markup, TLObject) else self.reply_markup,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xba}U\x83',
|
|
struct.pack('<I', (0 if self.no_webpage is None or self.no_webpage is False else 2) | (0 if self.invert_media is None or self.invert_media is False else 65536) | (0 if self.message is None or self.message is False else 2048) | (0 if self.media is None or self.media is False else 16384) | (0 if self.reply_markup is None or self.reply_markup is False else 4) | (0 if self.entities is None or self.entities is False else 8)),
|
|
self.id._bytes(),
|
|
b'' if self.message is None or self.message is False else (self.serialize_bytes(self.message)),
|
|
b'' if self.media is None or self.media is False else (self.media._bytes()),
|
|
b'' if self.reply_markup is None or self.reply_markup is False else (self.reply_markup._bytes()),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_no_webpage = bool(flags & 2)
|
|
_invert_media = bool(flags & 65536)
|
|
_id = reader.tgread_object()
|
|
if flags & 2048:
|
|
_message = reader.tgread_string()
|
|
else:
|
|
_message = None
|
|
if flags & 16384:
|
|
_media = reader.tgread_object()
|
|
else:
|
|
_media = None
|
|
if flags & 4:
|
|
_reply_markup = reader.tgread_object()
|
|
else:
|
|
_reply_markup = None
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
return cls(id=_id, no_webpage=_no_webpage, invert_media=_invert_media, message=_message, media=_media, reply_markup=_reply_markup, entities=_entities)
|
|
|
|
|
|
class EditMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xdfd14005
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, no_webpage: Optional[bool]=None, invert_media: Optional[bool]=None, message: Optional[str]=None, media: Optional['TypeInputMedia']=None, reply_markup: Optional['TypeReplyMarkup']=None, entities: Optional[List['TypeMessageEntity']]=None, schedule_date: Optional[datetime]=None, quick_reply_shortcut_id: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.no_webpage = no_webpage
|
|
self.invert_media = invert_media
|
|
self.message = message
|
|
self.media = media
|
|
self.reply_markup = reply_markup
|
|
self.entities = entities
|
|
self.schedule_date = schedule_date
|
|
self.quick_reply_shortcut_id = quick_reply_shortcut_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.media:
|
|
self.media = utils.get_input_media(self.media)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditMessageRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'no_webpage': self.no_webpage,
|
|
'invert_media': self.invert_media,
|
|
'message': self.message,
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media,
|
|
'reply_markup': self.reply_markup.to_dict() if isinstance(self.reply_markup, TLObject) else self.reply_markup,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities],
|
|
'schedule_date': self.schedule_date,
|
|
'quick_reply_shortcut_id': self.quick_reply_shortcut_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x05@\xd1\xdf',
|
|
struct.pack('<I', (0 if self.no_webpage is None or self.no_webpage is False else 2) | (0 if self.invert_media is None or self.invert_media is False else 65536) | (0 if self.message is None or self.message is False else 2048) | (0 if self.media is None or self.media is False else 16384) | (0 if self.reply_markup is None or self.reply_markup is False else 4) | (0 if self.entities is None or self.entities is False else 8) | (0 if self.schedule_date is None or self.schedule_date is False else 32768) | (0 if self.quick_reply_shortcut_id is None or self.quick_reply_shortcut_id is False else 131072)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
b'' if self.message is None or self.message is False else (self.serialize_bytes(self.message)),
|
|
b'' if self.media is None or self.media is False else (self.media._bytes()),
|
|
b'' if self.reply_markup is None or self.reply_markup is False else (self.reply_markup._bytes()),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.quick_reply_shortcut_id is None or self.quick_reply_shortcut_id is False else (struct.pack('<i', self.quick_reply_shortcut_id)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_no_webpage = bool(flags & 2)
|
|
_invert_media = bool(flags & 65536)
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
if flags & 2048:
|
|
_message = reader.tgread_string()
|
|
else:
|
|
_message = None
|
|
if flags & 16384:
|
|
_media = reader.tgread_object()
|
|
else:
|
|
_media = None
|
|
if flags & 4:
|
|
_reply_markup = reader.tgread_object()
|
|
else:
|
|
_reply_markup = None
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
if flags & 32768:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut_id = reader.read_int()
|
|
else:
|
|
_quick_reply_shortcut_id = None
|
|
return cls(peer=_peer, id=_id, no_webpage=_no_webpage, invert_media=_invert_media, message=_message, media=_media, reply_markup=_reply_markup, entities=_entities, schedule_date=_schedule_date, quick_reply_shortcut_id=_quick_reply_shortcut_id)
|
|
|
|
|
|
class EditQuickReplyShortcutRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5c003cef
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, shortcut_id: int, shortcut: str):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.shortcut_id = shortcut_id
|
|
self.shortcut = shortcut
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'EditQuickReplyShortcutRequest',
|
|
'shortcut_id': self.shortcut_id,
|
|
'shortcut': self.shortcut
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xef<\x00\\',
|
|
struct.pack('<i', self.shortcut_id),
|
|
self.serialize_bytes(self.shortcut),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_shortcut_id = reader.read_int()
|
|
_shortcut = reader.tgread_string()
|
|
return cls(shortcut_id=_shortcut_id, shortcut=_shortcut)
|
|
|
|
|
|
class ExportChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa02ce5d5
|
|
SUBCLASS_OF_ID = 0xb4748a58
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', legacy_revoke_permanent: Optional[bool]=None, request_needed: Optional[bool]=None, expire_date: Optional[datetime]=None, usage_limit: Optional[int]=None, title: Optional[str]=None):
|
|
"""
|
|
:returns ExportedChatInvite: Instance of either ChatInviteExported, ChatInvitePublicJoinRequests.
|
|
"""
|
|
self.peer = peer
|
|
self.legacy_revoke_permanent = legacy_revoke_permanent
|
|
self.request_needed = request_needed
|
|
self.expire_date = expire_date
|
|
self.usage_limit = usage_limit
|
|
self.title = title
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ExportChatInviteRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'legacy_revoke_permanent': self.legacy_revoke_permanent,
|
|
'request_needed': self.request_needed,
|
|
'expire_date': self.expire_date,
|
|
'usage_limit': self.usage_limit,
|
|
'title': self.title
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd5\xe5,\xa0',
|
|
struct.pack('<I', (0 if self.legacy_revoke_permanent is None or self.legacy_revoke_permanent is False else 4) | (0 if self.request_needed is None or self.request_needed is False else 8) | (0 if self.expire_date is None or self.expire_date is False else 1) | (0 if self.usage_limit is None or self.usage_limit is False else 2) | (0 if self.title is None or self.title is False else 16)),
|
|
self.peer._bytes(),
|
|
b'' if self.expire_date is None or self.expire_date is False else (self.serialize_datetime(self.expire_date)),
|
|
b'' if self.usage_limit is None or self.usage_limit is False else (struct.pack('<i', self.usage_limit)),
|
|
b'' if self.title is None or self.title is False else (self.serialize_bytes(self.title)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_legacy_revoke_permanent = bool(flags & 4)
|
|
_request_needed = bool(flags & 8)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_expire_date = reader.tgread_date()
|
|
else:
|
|
_expire_date = None
|
|
if flags & 2:
|
|
_usage_limit = reader.read_int()
|
|
else:
|
|
_usage_limit = None
|
|
if flags & 16:
|
|
_title = reader.tgread_string()
|
|
else:
|
|
_title = None
|
|
return cls(peer=_peer, legacy_revoke_permanent=_legacy_revoke_permanent, request_needed=_request_needed, expire_date=_expire_date, usage_limit=_usage_limit, title=_title)
|
|
|
|
|
|
class FaveStickerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb9ffc55b
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: 'TypeInputDocument', unfave: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.unfave = unfave
|
|
|
|
async def resolve(self, client, utils):
|
|
self.id = utils.get_input_document(self.id)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'FaveStickerRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'unfave': self.unfave
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'[\xc5\xff\xb9',
|
|
self.id._bytes(),
|
|
b'\xb5ur\x99' if self.unfave else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_id = reader.tgread_object()
|
|
_unfave = reader.tgread_bool()
|
|
return cls(id=_id, unfave=_unfave)
|
|
|
|
|
|
class ForwardMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd5039208
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, from_peer: 'TypeInputPeer', id: List[int], to_peer: 'TypeInputPeer', silent: Optional[bool]=None, background: Optional[bool]=None, with_my_score: Optional[bool]=None, drop_author: Optional[bool]=None, drop_media_captions: Optional[bool]=None, noforwards: Optional[bool]=None, random_id: List[int]=None, top_msg_id: Optional[int]=None, schedule_date: Optional[datetime]=None, send_as: Optional['TypeInputPeer']=None, quick_reply_shortcut: Optional['TypeInputQuickReplyShortcut']=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.from_peer = from_peer
|
|
self.id = id
|
|
self.to_peer = to_peer
|
|
self.silent = silent
|
|
self.background = background
|
|
self.with_my_score = with_my_score
|
|
self.drop_author = drop_author
|
|
self.drop_media_captions = drop_media_captions
|
|
self.noforwards = noforwards
|
|
self.random_id = random_id if random_id is not None else [int.from_bytes(os.urandom(8), 'big', signed=True) for _ in range(len(id))]
|
|
self.top_msg_id = top_msg_id
|
|
self.schedule_date = schedule_date
|
|
self.send_as = send_as
|
|
self.quick_reply_shortcut = quick_reply_shortcut
|
|
|
|
async def resolve(self, client, utils):
|
|
self.from_peer = utils.get_input_peer(await client.get_input_entity(self.from_peer))
|
|
self.to_peer = utils.get_input_peer(await client.get_input_entity(self.to_peer))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ForwardMessagesRequest',
|
|
'from_peer': self.from_peer.to_dict() if isinstance(self.from_peer, TLObject) else self.from_peer,
|
|
'id': [] if self.id is None else self.id[:],
|
|
'to_peer': self.to_peer.to_dict() if isinstance(self.to_peer, TLObject) else self.to_peer,
|
|
'silent': self.silent,
|
|
'background': self.background,
|
|
'with_my_score': self.with_my_score,
|
|
'drop_author': self.drop_author,
|
|
'drop_media_captions': self.drop_media_captions,
|
|
'noforwards': self.noforwards,
|
|
'random_id': [] if self.random_id is None else self.random_id[:],
|
|
'top_msg_id': self.top_msg_id,
|
|
'schedule_date': self.schedule_date,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as,
|
|
'quick_reply_shortcut': self.quick_reply_shortcut.to_dict() if isinstance(self.quick_reply_shortcut, TLObject) else self.quick_reply_shortcut
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x08\x92\x03\xd5',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 32) | (0 if self.background is None or self.background is False else 64) | (0 if self.with_my_score is None or self.with_my_score is False else 256) | (0 if self.drop_author is None or self.drop_author is False else 2048) | (0 if self.drop_media_captions is None or self.drop_media_captions is False else 4096) | (0 if self.noforwards is None or self.noforwards is False else 16384) | (0 if self.top_msg_id is None or self.top_msg_id is False else 512) | (0 if self.schedule_date is None or self.schedule_date is False else 1024) | (0 if self.send_as is None or self.send_as is False else 8192) | (0 if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else 131072)),
|
|
self.from_peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.random_id)),b''.join(struct.pack('<q', x) for x in self.random_id),
|
|
self.to_peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
b'' if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else (self.quick_reply_shortcut._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 32)
|
|
_background = bool(flags & 64)
|
|
_with_my_score = bool(flags & 256)
|
|
_drop_author = bool(flags & 2048)
|
|
_drop_media_captions = bool(flags & 4096)
|
|
_noforwards = bool(flags & 16384)
|
|
_from_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
reader.read_int()
|
|
_random_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_random_id.append(_x)
|
|
|
|
_to_peer = reader.tgread_object()
|
|
if flags & 512:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
if flags & 1024:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut = reader.tgread_object()
|
|
else:
|
|
_quick_reply_shortcut = None
|
|
return cls(from_peer=_from_peer, id=_id, to_peer=_to_peer, silent=_silent, background=_background, with_my_score=_with_my_score, drop_author=_drop_author, drop_media_captions=_drop_media_captions, noforwards=_noforwards, random_id=_random_id, top_msg_id=_top_msg_id, schedule_date=_schedule_date, send_as=_send_as, quick_reply_shortcut=_quick_reply_shortcut)
|
|
|
|
|
|
class GetAdminsWithInvitesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3920e6ef
|
|
SUBCLASS_OF_ID = 0x8f5bad2b
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns messages.ChatAdminsWithInvites: Instance of ChatAdminsWithInvites.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAdminsWithInvitesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xef\xe6 9',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class GetAllDraftsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6a3f8d65
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAllDraftsRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'e\x8d?j',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetAllStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb8a0a1a8
|
|
SUBCLASS_OF_ID = 0x45834829
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.AllStickers: Instance of either AllStickersNotModified, AllStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAllStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa8\xa1\xa0\xb8',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetArchivedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x57f17692
|
|
SUBCLASS_OF_ID = 0x7296d771
|
|
|
|
def __init__(self, offset_id: int, limit: int, masks: Optional[bool]=None, emojis: Optional[bool]=None):
|
|
"""
|
|
:returns messages.ArchivedStickers: Instance of ArchivedStickers.
|
|
"""
|
|
self.offset_id = offset_id
|
|
self.limit = limit
|
|
self.masks = masks
|
|
self.emojis = emojis
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetArchivedStickersRequest',
|
|
'offset_id': self.offset_id,
|
|
'limit': self.limit,
|
|
'masks': self.masks,
|
|
'emojis': self.emojis
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x92v\xf1W',
|
|
struct.pack('<I', (0 if self.masks is None or self.masks is False else 1) | (0 if self.emojis is None or self.emojis is False else 2)),
|
|
struct.pack('<q', self.offset_id),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_masks = bool(flags & 1)
|
|
_emojis = bool(flags & 2)
|
|
_offset_id = reader.read_long()
|
|
_limit = reader.read_int()
|
|
return cls(offset_id=_offset_id, limit=_limit, masks=_masks, emojis=_emojis)
|
|
|
|
|
|
class GetAttachMenuBotRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x77216192
|
|
SUBCLASS_OF_ID = 0xdb33883d
|
|
|
|
def __init__(self, bot: 'TypeInputUser'):
|
|
"""
|
|
:returns AttachMenuBotsBot: Instance of AttachMenuBotsBot.
|
|
"""
|
|
self.bot = bot
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAttachMenuBotRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x92a!w',
|
|
self.bot._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_bot = reader.tgread_object()
|
|
return cls(bot=_bot)
|
|
|
|
|
|
class GetAttachMenuBotsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x16fcc2cb
|
|
SUBCLASS_OF_ID = 0x842e23da
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns AttachMenuBots: Instance of either AttachMenuBotsNotModified, AttachMenuBots.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAttachMenuBotsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xcb\xc2\xfc\x16',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetAttachedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xcc5b67cc
|
|
SUBCLASS_OF_ID = 0xcc125f6b
|
|
|
|
def __init__(self, media: 'TypeInputStickeredMedia'):
|
|
"""
|
|
:returns Vector<StickerSetCovered>: This type has no constructors.
|
|
"""
|
|
self.media = media
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAttachedStickersRequest',
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xccg[\xcc',
|
|
self.media._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_media = reader.tgread_object()
|
|
return cls(media=_media)
|
|
|
|
|
|
class GetAvailableEffectsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xdea20a39
|
|
SUBCLASS_OF_ID = 0x4470d5bd
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.AvailableEffects: Instance of either AvailableEffectsNotModified, AvailableEffects.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAvailableEffectsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'9\n\xa2\xde',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetAvailableReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x18dea0ac
|
|
SUBCLASS_OF_ID = 0xe426ad82
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.AvailableReactions: Instance of either AvailableReactionsNotModified, AvailableReactions.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetAvailableReactionsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xac\xa0\xde\x18',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetBotAppRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x34fdc5c3
|
|
SUBCLASS_OF_ID = 0x8f7243a7
|
|
|
|
def __init__(self, app: 'TypeInputBotApp', hash: int):
|
|
"""
|
|
:returns messages.BotApp: Instance of BotApp.
|
|
"""
|
|
self.app = app
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetBotAppRequest',
|
|
'app': self.app.to_dict() if isinstance(self.app, TLObject) else self.app,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc3\xc5\xfd4',
|
|
self.app._bytes(),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_app = reader.tgread_object()
|
|
_hash = reader.read_long()
|
|
return cls(app=_app, hash=_hash)
|
|
|
|
|
|
class GetBotCallbackAnswerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9342ca07
|
|
SUBCLASS_OF_ID = 0x6c4dd18c
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, game: Optional[bool]=None, data: Optional[bytes]=None, password: Optional['TypeInputCheckPasswordSRP']=None):
|
|
"""
|
|
:returns messages.BotCallbackAnswer: Instance of BotCallbackAnswer.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.game = game
|
|
self.data = data
|
|
self.password = password
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetBotCallbackAnswerRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'game': self.game,
|
|
'data': self.data,
|
|
'password': self.password.to_dict() if isinstance(self.password, TLObject) else self.password
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x07\xcaB\x93',
|
|
struct.pack('<I', (0 if self.game is None or self.game is False else 2) | (0 if self.data is None or self.data is False else 1) | (0 if self.password is None or self.password is False else 4)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
b'' if self.data is None or self.data is False else (self.serialize_bytes(self.data)),
|
|
b'' if self.password is None or self.password is False else (self.password._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_game = bool(flags & 2)
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
if flags & 1:
|
|
_data = reader.tgread_bytes()
|
|
else:
|
|
_data = None
|
|
if flags & 4:
|
|
_password = reader.tgread_object()
|
|
else:
|
|
_password = None
|
|
return cls(peer=_peer, msg_id=_msg_id, game=_game, data=_data, password=_password)
|
|
|
|
|
|
class GetChatInviteImportersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xdf04dd4e
|
|
SUBCLASS_OF_ID = 0xd9bc8aa6
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', offset_date: Optional[datetime], offset_user: 'TypeInputUser', limit: int, requested: Optional[bool]=None, link: Optional[str]=None, q: Optional[str]=None):
|
|
"""
|
|
:returns messages.ChatInviteImporters: Instance of ChatInviteImporters.
|
|
"""
|
|
self.peer = peer
|
|
self.offset_date = offset_date
|
|
self.offset_user = offset_user
|
|
self.limit = limit
|
|
self.requested = requested
|
|
self.link = link
|
|
self.q = q
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.offset_user = utils.get_input_user(await client.get_input_entity(self.offset_user))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetChatInviteImportersRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'offset_date': self.offset_date,
|
|
'offset_user': self.offset_user.to_dict() if isinstance(self.offset_user, TLObject) else self.offset_user,
|
|
'limit': self.limit,
|
|
'requested': self.requested,
|
|
'link': self.link,
|
|
'q': self.q
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'N\xdd\x04\xdf',
|
|
struct.pack('<I', (0 if self.requested is None or self.requested is False else 1) | (0 if self.link is None or self.link is False else 2) | (0 if self.q is None or self.q is False else 4)),
|
|
self.peer._bytes(),
|
|
b'' if self.link is None or self.link is False else (self.serialize_bytes(self.link)),
|
|
b'' if self.q is None or self.q is False else (self.serialize_bytes(self.q)),
|
|
self.serialize_datetime(self.offset_date),
|
|
self.offset_user._bytes(),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_requested = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
if flags & 2:
|
|
_link = reader.tgread_string()
|
|
else:
|
|
_link = None
|
|
if flags & 4:
|
|
_q = reader.tgread_string()
|
|
else:
|
|
_q = None
|
|
_offset_date = reader.tgread_date()
|
|
_offset_user = reader.tgread_object()
|
|
_limit = reader.read_int()
|
|
return cls(peer=_peer, offset_date=_offset_date, offset_user=_offset_user, limit=_limit, requested=_requested, link=_link, q=_q)
|
|
|
|
|
|
class GetChatsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x49e9528f
|
|
SUBCLASS_OF_ID = 0x99d5cb14
|
|
|
|
def __init__(self, id: List[int]):
|
|
"""
|
|
:returns messages.Chats: Instance of either Chats, ChatsSlice.
|
|
"""
|
|
self.id = id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetChatsRequest',
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x8fR\xe9I',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<q', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_id.append(_x)
|
|
|
|
return cls(id=_id)
|
|
|
|
|
|
class GetCommonChatsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe40ca104
|
|
SUBCLASS_OF_ID = 0x99d5cb14
|
|
|
|
def __init__(self, user_id: 'TypeInputUser', max_id: int, limit: int):
|
|
"""
|
|
:returns messages.Chats: Instance of either Chats, ChatsSlice.
|
|
"""
|
|
self.user_id = user_id
|
|
self.max_id = max_id
|
|
self.limit = limit
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetCommonChatsRequest',
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'max_id': self.max_id,
|
|
'limit': self.limit
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x04\xa1\x0c\xe4',
|
|
self.user_id._bytes(),
|
|
struct.pack('<q', self.max_id),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_user_id = reader.tgread_object()
|
|
_max_id = reader.read_long()
|
|
_limit = reader.read_int()
|
|
return cls(user_id=_user_id, max_id=_max_id, limit=_limit)
|
|
|
|
|
|
class GetCustomEmojiDocumentsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd9ab0f54
|
|
SUBCLASS_OF_ID = 0xcc590e08
|
|
|
|
def __init__(self, document_id: List[int]):
|
|
"""
|
|
:returns Vector<Document>: This type has no constructors.
|
|
"""
|
|
self.document_id = document_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetCustomEmojiDocumentsRequest',
|
|
'document_id': [] if self.document_id is None else self.document_id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'T\x0f\xab\xd9',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.document_id)),b''.join(struct.pack('<q', x) for x in self.document_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_document_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_document_id.append(_x)
|
|
|
|
return cls(document_id=_document_id)
|
|
|
|
|
|
class GetDefaultHistoryTTLRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x658b7188
|
|
SUBCLASS_OF_ID = 0xf00d3367
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDefaultHistoryTTLRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x88q\x8be',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetDefaultTagReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbdf93428
|
|
SUBCLASS_OF_ID = 0xadc38324
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.Reactions: Instance of either ReactionsNotModified, Reactions.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDefaultTagReactionsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'(4\xf9\xbd',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetDhConfigRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x26cf8950
|
|
SUBCLASS_OF_ID = 0xe488ed8b
|
|
|
|
def __init__(self, version: int, random_length: int):
|
|
"""
|
|
:returns messages.DhConfig: Instance of either DhConfigNotModified, DhConfig.
|
|
"""
|
|
self.version = version
|
|
self.random_length = random_length
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDhConfigRequest',
|
|
'version': self.version,
|
|
'random_length': self.random_length
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'P\x89\xcf&',
|
|
struct.pack('<i', self.version),
|
|
struct.pack('<i', self.random_length),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_version = reader.read_int()
|
|
_random_length = reader.read_int()
|
|
return cls(version=_version, random_length=_random_length)
|
|
|
|
|
|
class GetDialogFiltersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xefd48c89
|
|
SUBCLASS_OF_ID = 0xa5fff1b7
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDialogFiltersRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x89\x8c\xd4\xef',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetDialogUnreadMarksRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x22e24e22
|
|
SUBCLASS_OF_ID = 0xbec64ad9
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDialogUnreadMarksRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'"N\xe2"',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa0f4cb4f
|
|
SUBCLASS_OF_ID = 0xe1b52ee
|
|
|
|
def __init__(self, offset_date: Optional[datetime], offset_id: int, offset_peer: 'TypeInputPeer', limit: int, hash: int, exclude_pinned: Optional[bool]=None, folder_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.Dialogs: Instance of either Dialogs, DialogsSlice, DialogsNotModified.
|
|
"""
|
|
self.offset_date = offset_date
|
|
self.offset_id = offset_id
|
|
self.offset_peer = offset_peer
|
|
self.limit = limit
|
|
self.hash = hash
|
|
self.exclude_pinned = exclude_pinned
|
|
self.folder_id = folder_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.offset_peer = utils.get_input_peer(await client.get_input_entity(self.offset_peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDialogsRequest',
|
|
'offset_date': self.offset_date,
|
|
'offset_id': self.offset_id,
|
|
'offset_peer': self.offset_peer.to_dict() if isinstance(self.offset_peer, TLObject) else self.offset_peer,
|
|
'limit': self.limit,
|
|
'hash': self.hash,
|
|
'exclude_pinned': self.exclude_pinned,
|
|
'folder_id': self.folder_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'O\xcb\xf4\xa0',
|
|
struct.pack('<I', (0 if self.exclude_pinned is None or self.exclude_pinned is False else 1) | (0 if self.folder_id is None or self.folder_id is False else 2)),
|
|
b'' if self.folder_id is None or self.folder_id is False else (struct.pack('<i', self.folder_id)),
|
|
self.serialize_datetime(self.offset_date),
|
|
struct.pack('<i', self.offset_id),
|
|
self.offset_peer._bytes(),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_exclude_pinned = bool(flags & 1)
|
|
if flags & 2:
|
|
_folder_id = reader.read_int()
|
|
else:
|
|
_folder_id = None
|
|
_offset_date = reader.tgread_date()
|
|
_offset_id = reader.read_int()
|
|
_offset_peer = reader.tgread_object()
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(offset_date=_offset_date, offset_id=_offset_id, offset_peer=_offset_peer, limit=_limit, hash=_hash, exclude_pinned=_exclude_pinned, folder_id=_folder_id)
|
|
|
|
|
|
class GetDiscussionMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x446972fd
|
|
SUBCLASS_OF_ID = 0x53f8e3e8
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns messages.DiscussionMessage: Instance of DiscussionMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDiscussionMessageRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xfdriD',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class GetDocumentByHashRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb1f2061f
|
|
SUBCLASS_OF_ID = 0x211fe820
|
|
|
|
def __init__(self, sha256: bytes, size: int, mime_type: str):
|
|
"""
|
|
:returns Document: Instance of either DocumentEmpty, Document.
|
|
"""
|
|
self.sha256 = sha256
|
|
self.size = size
|
|
self.mime_type = mime_type
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetDocumentByHashRequest',
|
|
'sha256': self.sha256,
|
|
'size': self.size,
|
|
'mime_type': self.mime_type
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x1f\x06\xf2\xb1',
|
|
self.serialize_bytes(self.sha256),
|
|
struct.pack('<q', self.size),
|
|
self.serialize_bytes(self.mime_type),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_sha256 = reader.tgread_bytes()
|
|
_size = reader.read_long()
|
|
_mime_type = reader.tgread_string()
|
|
return cls(sha256=_sha256, size=_size, mime_type=_mime_type)
|
|
|
|
|
|
class GetEmojiGroupsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7488ce5b
|
|
SUBCLASS_OF_ID = 0x7eca55d9
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.EmojiGroups: Instance of either EmojiGroupsNotModified, EmojiGroups.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiGroupsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'[\xce\x88t',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetEmojiKeywordsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x35a0e062
|
|
SUBCLASS_OF_ID = 0xd279c672
|
|
|
|
def __init__(self, lang_code: str):
|
|
"""
|
|
:returns EmojiKeywordsDifference: Instance of EmojiKeywordsDifference.
|
|
"""
|
|
self.lang_code = lang_code
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiKeywordsRequest',
|
|
'lang_code': self.lang_code
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'b\xe0\xa05',
|
|
self.serialize_bytes(self.lang_code),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_lang_code = reader.tgread_string()
|
|
return cls(lang_code=_lang_code)
|
|
|
|
|
|
class GetEmojiKeywordsDifferenceRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1508b6af
|
|
SUBCLASS_OF_ID = 0xd279c672
|
|
|
|
def __init__(self, lang_code: str, from_version: int):
|
|
"""
|
|
:returns EmojiKeywordsDifference: Instance of EmojiKeywordsDifference.
|
|
"""
|
|
self.lang_code = lang_code
|
|
self.from_version = from_version
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiKeywordsDifferenceRequest',
|
|
'lang_code': self.lang_code,
|
|
'from_version': self.from_version
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xaf\xb6\x08\x15',
|
|
self.serialize_bytes(self.lang_code),
|
|
struct.pack('<i', self.from_version),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_lang_code = reader.tgread_string()
|
|
_from_version = reader.read_int()
|
|
return cls(lang_code=_lang_code, from_version=_from_version)
|
|
|
|
|
|
class GetEmojiKeywordsLanguagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4e9963b2
|
|
SUBCLASS_OF_ID = 0xe795d387
|
|
|
|
def __init__(self, lang_codes: List[str]):
|
|
"""
|
|
:returns Vector<EmojiLanguage>: This type has no constructors.
|
|
"""
|
|
self.lang_codes = lang_codes
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiKeywordsLanguagesRequest',
|
|
'lang_codes': [] if self.lang_codes is None else self.lang_codes[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xb2c\x99N',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.lang_codes)),b''.join(self.serialize_bytes(x) for x in self.lang_codes),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_lang_codes = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_string()
|
|
_lang_codes.append(_x)
|
|
|
|
return cls(lang_codes=_lang_codes)
|
|
|
|
|
|
class GetEmojiProfilePhotoGroupsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x21a548f3
|
|
SUBCLASS_OF_ID = 0x7eca55d9
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.EmojiGroups: Instance of either EmojiGroupsNotModified, EmojiGroups.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiProfilePhotoGroupsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf3H\xa5!',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetEmojiStatusGroupsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x2ecd56cd
|
|
SUBCLASS_OF_ID = 0x7eca55d9
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.EmojiGroups: Instance of either EmojiGroupsNotModified, EmojiGroups.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiStatusGroupsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xcdV\xcd.',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetEmojiStickerGroupsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1dd840f5
|
|
SUBCLASS_OF_ID = 0x7eca55d9
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.EmojiGroups: Instance of either EmojiGroupsNotModified, EmojiGroups.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiStickerGroupsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf5@\xd8\x1d',
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_int()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetEmojiStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xfbfca18f
|
|
SUBCLASS_OF_ID = 0x45834829
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.AllStickers: Instance of either AllStickersNotModified, AllStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x8f\xa1\xfc\xfb',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetEmojiURLRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd5b10c26
|
|
SUBCLASS_OF_ID = 0x1fa08a19
|
|
|
|
def __init__(self, lang_code: str):
|
|
"""
|
|
:returns EmojiURL: Instance of EmojiURL.
|
|
"""
|
|
self.lang_code = lang_code
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetEmojiURLRequest',
|
|
'lang_code': self.lang_code
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'&\x0c\xb1\xd5',
|
|
self.serialize_bytes(self.lang_code),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_lang_code = reader.tgread_string()
|
|
return cls(lang_code=_lang_code)
|
|
|
|
|
|
class GetExportedChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x73746f5c
|
|
SUBCLASS_OF_ID = 0x82dcd4ca
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', link: str):
|
|
"""
|
|
:returns messages.ExportedChatInvite: Instance of either ExportedChatInvite, ExportedChatInviteReplaced.
|
|
"""
|
|
self.peer = peer
|
|
self.link = link
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetExportedChatInviteRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'link': self.link
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\\ots',
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.link),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_link = reader.tgread_string()
|
|
return cls(peer=_peer, link=_link)
|
|
|
|
|
|
class GetExportedChatInvitesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa2b5a3f6
|
|
SUBCLASS_OF_ID = 0x603d3871
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', admin_id: 'TypeInputUser', limit: int, revoked: Optional[bool]=None, offset_date: Optional[datetime]=None, offset_link: Optional[str]=None):
|
|
"""
|
|
:returns messages.ExportedChatInvites: Instance of ExportedChatInvites.
|
|
"""
|
|
self.peer = peer
|
|
self.admin_id = admin_id
|
|
self.limit = limit
|
|
self.revoked = revoked
|
|
self.offset_date = offset_date
|
|
self.offset_link = offset_link
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.admin_id = utils.get_input_user(await client.get_input_entity(self.admin_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetExportedChatInvitesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'admin_id': self.admin_id.to_dict() if isinstance(self.admin_id, TLObject) else self.admin_id,
|
|
'limit': self.limit,
|
|
'revoked': self.revoked,
|
|
'offset_date': self.offset_date,
|
|
'offset_link': self.offset_link
|
|
}
|
|
|
|
def _bytes(self):
|
|
assert ((self.offset_date or self.offset_date is not None) and (self.offset_link or self.offset_link is not None)) or ((self.offset_date is None or self.offset_date is False) and (self.offset_link is None or self.offset_link is False)), 'offset_date, offset_link parameters must all be False-y (like None) or all me True-y'
|
|
return b''.join((
|
|
b'\xf6\xa3\xb5\xa2',
|
|
struct.pack('<I', (0 if self.revoked is None or self.revoked is False else 8) | (0 if self.offset_date is None or self.offset_date is False else 4) | (0 if self.offset_link is None or self.offset_link is False else 4)),
|
|
self.peer._bytes(),
|
|
self.admin_id._bytes(),
|
|
b'' if self.offset_date is None or self.offset_date is False else (self.serialize_datetime(self.offset_date)),
|
|
b'' if self.offset_link is None or self.offset_link is False else (self.serialize_bytes(self.offset_link)),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_revoked = bool(flags & 8)
|
|
_peer = reader.tgread_object()
|
|
_admin_id = reader.tgread_object()
|
|
if flags & 4:
|
|
_offset_date = reader.tgread_date()
|
|
else:
|
|
_offset_date = None
|
|
if flags & 4:
|
|
_offset_link = reader.tgread_string()
|
|
else:
|
|
_offset_link = None
|
|
_limit = reader.read_int()
|
|
return cls(peer=_peer, admin_id=_admin_id, limit=_limit, revoked=_revoked, offset_date=_offset_date, offset_link=_offset_link)
|
|
|
|
|
|
class GetExtendedMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x84f80814
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetExtendedMediaRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x14\x08\xf8\x84',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class GetFactCheckRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb9cdc5ee
|
|
SUBCLASS_OF_ID = 0xbba61813
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: List[int]):
|
|
"""
|
|
:returns Vector<FactCheck>: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetFactCheckRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': [] if self.msg_id is None else self.msg_id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xee\xc5\xcd\xb9',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.msg_id)),b''.join(struct.pack('<i', x) for x in self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_msg_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_msg_id.append(_x)
|
|
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class GetFavedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4f1aaa9
|
|
SUBCLASS_OF_ID = 0x8e736fb9
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.FavedStickers: Instance of either FavedStickersNotModified, FavedStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetFavedStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa9\xaa\xf1\x04',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetFeaturedEmojiStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xecf6736
|
|
SUBCLASS_OF_ID = 0x2614b722
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.FeaturedStickers: Instance of either FeaturedStickersNotModified, FeaturedStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetFeaturedEmojiStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'6g\xcf\x0e',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetFeaturedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x64780b14
|
|
SUBCLASS_OF_ID = 0x2614b722
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.FeaturedStickers: Instance of either FeaturedStickersNotModified, FeaturedStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetFeaturedStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x14\x0bxd',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetFullChatRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xaeb00b34
|
|
SUBCLASS_OF_ID = 0x225a5109
|
|
|
|
def __init__(self, chat_id: int):
|
|
"""
|
|
:returns messages.ChatFull: Instance of ChatFull.
|
|
"""
|
|
self.chat_id = chat_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetFullChatRequest',
|
|
'chat_id': self.chat_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'4\x0b\xb0\xae',
|
|
struct.pack('<q', self.chat_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
return cls(chat_id=_chat_id)
|
|
|
|
|
|
class GetGameHighScoresRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe822649d
|
|
SUBCLASS_OF_ID = 0x6ccd95fd
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, user_id: 'TypeInputUser'):
|
|
"""
|
|
:returns messages.HighScores: Instance of HighScores.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.user_id = user_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetGameHighScoresRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x9dd"\xe8',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
self.user_id._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
_user_id = reader.tgread_object()
|
|
return cls(peer=_peer, id=_id, user_id=_user_id)
|
|
|
|
|
|
class GetHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4423e6c5
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', offset_id: int, offset_date: Optional[datetime], add_offset: int, limit: int, max_id: int, min_id: int, hash: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.offset_id = offset_id
|
|
self.offset_date = offset_date
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.hash = hash
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'offset_id': self.offset_id,
|
|
'offset_date': self.offset_date,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc5\xe6#D',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.offset_id),
|
|
self.serialize_datetime(self.offset_date),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_offset_id = reader.read_int()
|
|
_offset_date = reader.tgread_date()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, offset_id=_offset_id, offset_date=_offset_date, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, hash=_hash)
|
|
|
|
|
|
class GetInlineBotResultsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x514e999d
|
|
SUBCLASS_OF_ID = 0x3ed4d9c9
|
|
|
|
def __init__(self, bot: 'TypeInputUser', peer: 'TypeInputPeer', query: str, offset: str, geo_point: Optional['TypeInputGeoPoint']=None):
|
|
"""
|
|
:returns messages.BotResults: Instance of BotResults.
|
|
"""
|
|
self.bot = bot
|
|
self.peer = peer
|
|
self.query = query
|
|
self.offset = offset
|
|
self.geo_point = geo_point
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetInlineBotResultsRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'query': self.query,
|
|
'offset': self.offset,
|
|
'geo_point': self.geo_point.to_dict() if isinstance(self.geo_point, TLObject) else self.geo_point
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x9d\x99NQ',
|
|
struct.pack('<I', (0 if self.geo_point is None or self.geo_point is False else 1)),
|
|
self.bot._bytes(),
|
|
self.peer._bytes(),
|
|
b'' if self.geo_point is None or self.geo_point is False else (self.geo_point._bytes()),
|
|
self.serialize_bytes(self.query),
|
|
self.serialize_bytes(self.offset),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_bot = reader.tgread_object()
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_geo_point = reader.tgread_object()
|
|
else:
|
|
_geo_point = None
|
|
_query = reader.tgread_string()
|
|
_offset = reader.tgread_string()
|
|
return cls(bot=_bot, peer=_peer, query=_query, offset=_offset, geo_point=_geo_point)
|
|
|
|
|
|
class GetInlineGameHighScoresRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf635e1b
|
|
SUBCLASS_OF_ID = 0x6ccd95fd
|
|
|
|
def __init__(self, id: 'TypeInputBotInlineMessageID', user_id: 'TypeInputUser'):
|
|
"""
|
|
:returns messages.HighScores: Instance of HighScores.
|
|
"""
|
|
self.id = id
|
|
self.user_id = user_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetInlineGameHighScoresRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x1b^c\x0f',
|
|
self.id._bytes(),
|
|
self.user_id._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_id = reader.tgread_object()
|
|
_user_id = reader.tgread_object()
|
|
return cls(id=_id, user_id=_user_id)
|
|
|
|
|
|
class GetMaskStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x640f82b8
|
|
SUBCLASS_OF_ID = 0x45834829
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.AllStickers: Instance of either AllStickersNotModified, AllStickers.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMaskStickersRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xb8\x82\x0fd',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetMessageEditDataRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xfda68d36
|
|
SUBCLASS_OF_ID = 0xfb47949d
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int):
|
|
"""
|
|
:returns messages.MessageEditData: Instance of MessageEditData.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessageEditDataRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'6\x8d\xa6\xfd',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class GetMessageReactionsListRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x461b3f48
|
|
SUBCLASS_OF_ID = 0x60fce5e6
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, limit: int, reaction: Optional['TypeReaction']=None, offset: Optional[str]=None):
|
|
"""
|
|
:returns messages.MessageReactionsList: Instance of MessageReactionsList.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.limit = limit
|
|
self.reaction = reaction
|
|
self.offset = offset
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessageReactionsListRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'limit': self.limit,
|
|
'reaction': self.reaction.to_dict() if isinstance(self.reaction, TLObject) else self.reaction,
|
|
'offset': self.offset
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'H?\x1bF',
|
|
struct.pack('<I', (0 if self.reaction is None or self.reaction is False else 1) | (0 if self.offset is None or self.offset is False else 2)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
b'' if self.reaction is None or self.reaction is False else (self.reaction._bytes()),
|
|
b'' if self.offset is None or self.offset is False else (self.serialize_bytes(self.offset)),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
if flags & 1:
|
|
_reaction = reader.tgread_object()
|
|
else:
|
|
_reaction = None
|
|
if flags & 2:
|
|
_offset = reader.tgread_string()
|
|
else:
|
|
_offset = None
|
|
_limit = reader.read_int()
|
|
return cls(peer=_peer, id=_id, limit=_limit, reaction=_reaction, offset=_offset)
|
|
|
|
|
|
class GetMessageReadParticipantsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x31c1c44f
|
|
SUBCLASS_OF_ID = 0x21ca455b
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns Vector<ReadParticipantDate>: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessageReadParticipantsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'O\xc4\xc11',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class GetMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x63c66506
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, id: List['TypeInputMessage']):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
_tmp = []
|
|
for _x in self.id:
|
|
_tmp.append(utils.get_input_message(_x))
|
|
|
|
self.id = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessagesRequest',
|
|
'id': [] if self.id is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.id]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x06e\xc6c',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(x._bytes() for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_id.append(_x)
|
|
|
|
return cls(id=_id)
|
|
|
|
|
|
class GetMessagesReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8bba90e6
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessagesReactionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe6\x90\xba\x8b',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class GetMessagesViewsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5784d3e1
|
|
SUBCLASS_OF_ID = 0xafb5eb9c
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int], increment: bool):
|
|
"""
|
|
:returns messages.MessageViews: Instance of MessageViews.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.increment = increment
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMessagesViewsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:],
|
|
'increment': self.increment
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe1\xd3\x84W',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
b'\xb5ur\x99' if self.increment else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
_increment = reader.tgread_bool()
|
|
return cls(peer=_peer, id=_id, increment=_increment)
|
|
|
|
|
|
class GetMyStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd0b5e1fc
|
|
SUBCLASS_OF_ID = 0xb1b4350a
|
|
|
|
def __init__(self, offset_id: int, limit: int):
|
|
"""
|
|
:returns messages.MyStickers: Instance of MyStickers.
|
|
"""
|
|
self.offset_id = offset_id
|
|
self.limit = limit
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetMyStickersRequest',
|
|
'offset_id': self.offset_id,
|
|
'limit': self.limit
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xfc\xe1\xb5\xd0',
|
|
struct.pack('<q', self.offset_id),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_offset_id = reader.read_long()
|
|
_limit = reader.read_int()
|
|
return cls(offset_id=_offset_id, limit=_limit)
|
|
|
|
|
|
class GetOldFeaturedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7ed094a1
|
|
SUBCLASS_OF_ID = 0x2614b722
|
|
|
|
def __init__(self, offset: int, limit: int, hash: int):
|
|
"""
|
|
:returns messages.FeaturedStickers: Instance of either FeaturedStickersNotModified, FeaturedStickers.
|
|
"""
|
|
self.offset = offset
|
|
self.limit = limit
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetOldFeaturedStickersRequest',
|
|
'offset': self.offset,
|
|
'limit': self.limit,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa1\x94\xd0~',
|
|
struct.pack('<i', self.offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(offset=_offset, limit=_limit, hash=_hash)
|
|
|
|
|
|
class GetOnlinesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6e2be050
|
|
SUBCLASS_OF_ID = 0x8c81903a
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns ChatOnlines: Instance of ChatOnlines.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetOnlinesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'P\xe0+n',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class GetOutboxReadDateRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8c4bfe5d
|
|
SUBCLASS_OF_ID = 0x6f5183c6
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns OutboxReadDate: Instance of OutboxReadDate.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetOutboxReadDateRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b']\xfeK\x8c',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class GetPeerDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe470bcfd
|
|
SUBCLASS_OF_ID = 0x3ac70132
|
|
|
|
def __init__(self, peers: List['TypeInputDialogPeer']):
|
|
"""
|
|
:returns messages.PeerDialogs: Instance of PeerDialogs.
|
|
"""
|
|
self.peers = peers
|
|
|
|
async def resolve(self, client, utils):
|
|
_tmp = []
|
|
for _x in self.peers:
|
|
_tmp.append(await client._get_input_dialog(_x))
|
|
|
|
self.peers = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPeerDialogsRequest',
|
|
'peers': [] if self.peers is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.peers]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xfd\xbcp\xe4',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.peers)),b''.join(x._bytes() for x in self.peers),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_peers = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_peers.append(_x)
|
|
|
|
return cls(peers=_peers)
|
|
|
|
|
|
class GetPeerSettingsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xefd9a6a2
|
|
SUBCLASS_OF_ID = 0x65a2f7a1
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns messages.PeerSettings: Instance of PeerSettings.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPeerSettingsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa2\xa6\xd9\xef',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class GetPinnedDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd6b94df2
|
|
SUBCLASS_OF_ID = 0x3ac70132
|
|
|
|
def __init__(self, folder_id: int):
|
|
"""
|
|
:returns messages.PeerDialogs: Instance of PeerDialogs.
|
|
"""
|
|
self.folder_id = folder_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPinnedDialogsRequest',
|
|
'folder_id': self.folder_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf2M\xb9\xd6',
|
|
struct.pack('<i', self.folder_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_folder_id = reader.read_int()
|
|
return cls(folder_id=_folder_id)
|
|
|
|
|
|
class GetPinnedSavedDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd63d94e0
|
|
SUBCLASS_OF_ID = 0x614bb87e
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPinnedSavedDialogsRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe0\x94=\xd6',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetPollResultsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x73bb643b
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPollResultsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b';d\xbbs',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class GetPollVotesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb86e380e
|
|
SUBCLASS_OF_ID = 0xc2199885
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, limit: int, option: Optional[bytes]=None, offset: Optional[str]=None):
|
|
"""
|
|
:returns messages.VotesList: Instance of VotesList.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.limit = limit
|
|
self.option = option
|
|
self.offset = offset
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetPollVotesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'limit': self.limit,
|
|
'option': self.option,
|
|
'offset': self.offset
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x0e8n\xb8',
|
|
struct.pack('<I', (0 if self.option is None or self.option is False else 1) | (0 if self.offset is None or self.offset is False else 2)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
b'' if self.option is None or self.option is False else (self.serialize_bytes(self.option)),
|
|
b'' if self.offset is None or self.offset is False else (self.serialize_bytes(self.offset)),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
if flags & 1:
|
|
_option = reader.tgread_bytes()
|
|
else:
|
|
_option = None
|
|
if flags & 2:
|
|
_offset = reader.tgread_string()
|
|
else:
|
|
_offset = None
|
|
_limit = reader.read_int()
|
|
return cls(peer=_peer, id=_id, limit=_limit, option=_option, offset=_offset)
|
|
|
|
|
|
class GetQuickRepliesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd483f2a8
|
|
SUBCLASS_OF_ID = 0xf737e966
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.QuickReplies: Instance of either QuickReplies, QuickRepliesNotModified.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetQuickRepliesRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa8\xf2\x83\xd4',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetQuickReplyMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x94a495c3
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, shortcut_id: int, hash: int, id: Optional[List[int]]=None):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.shortcut_id = shortcut_id
|
|
self.hash = hash
|
|
self.id = id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetQuickReplyMessagesRequest',
|
|
'shortcut_id': self.shortcut_id,
|
|
'hash': self.hash,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc3\x95\xa4\x94',
|
|
struct.pack('<I', (0 if self.id is None or self.id is False else 1)),
|
|
struct.pack('<i', self.shortcut_id),
|
|
b'' if self.id is None or self.id is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id))),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_shortcut_id = reader.read_int()
|
|
if flags & 1:
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
else:
|
|
_id = None
|
|
_hash = reader.read_long()
|
|
return cls(shortcut_id=_shortcut_id, hash=_hash, id=_id)
|
|
|
|
|
|
class GetRecentLocationsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x702a40e0
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', limit: int, hash: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.limit = limit
|
|
self.hash = hash
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetRecentLocationsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'limit': self.limit,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe0@*p',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, limit=_limit, hash=_hash)
|
|
|
|
|
|
class GetRecentReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x39461db2
|
|
SUBCLASS_OF_ID = 0xadc38324
|
|
|
|
def __init__(self, limit: int, hash: int):
|
|
"""
|
|
:returns messages.Reactions: Instance of either ReactionsNotModified, Reactions.
|
|
"""
|
|
self.limit = limit
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetRecentReactionsRequest',
|
|
'limit': self.limit,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xb2\x1dF9',
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(limit=_limit, hash=_hash)
|
|
|
|
|
|
class GetRecentStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9da9403b
|
|
SUBCLASS_OF_ID = 0xf76f8683
|
|
|
|
def __init__(self, hash: int, attached: Optional[bool]=None):
|
|
"""
|
|
:returns messages.RecentStickers: Instance of either RecentStickersNotModified, RecentStickers.
|
|
"""
|
|
self.hash = hash
|
|
self.attached = attached
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetRecentStickersRequest',
|
|
'hash': self.hash,
|
|
'attached': self.attached
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b';@\xa9\x9d',
|
|
struct.pack('<I', (0 if self.attached is None or self.attached is False else 1)),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_attached = bool(flags & 1)
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash, attached=_attached)
|
|
|
|
|
|
class GetRepliesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x22ddd30c
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, offset_id: int, offset_date: Optional[datetime], add_offset: int, limit: int, max_id: int, min_id: int, hash: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.offset_id = offset_id
|
|
self.offset_date = offset_date
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.hash = hash
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetRepliesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'offset_id': self.offset_id,
|
|
'offset_date': self.offset_date,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x0c\xd3\xdd"',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
struct.pack('<i', self.offset_id),
|
|
self.serialize_datetime(self.offset_date),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
_offset_id = reader.read_int()
|
|
_offset_date = reader.tgread_date()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, msg_id=_msg_id, offset_id=_offset_id, offset_date=_offset_date, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, hash=_hash)
|
|
|
|
|
|
class GetSavedDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5381d21a
|
|
SUBCLASS_OF_ID = 0x614bb87e
|
|
|
|
def __init__(self, offset_date: Optional[datetime], offset_id: int, offset_peer: 'TypeInputPeer', limit: int, hash: int, exclude_pinned: Optional[bool]=None):
|
|
"""
|
|
:returns messages.SavedDialogs: Instance of either SavedDialogs, SavedDialogsSlice, SavedDialogsNotModified.
|
|
"""
|
|
self.offset_date = offset_date
|
|
self.offset_id = offset_id
|
|
self.offset_peer = offset_peer
|
|
self.limit = limit
|
|
self.hash = hash
|
|
self.exclude_pinned = exclude_pinned
|
|
|
|
async def resolve(self, client, utils):
|
|
self.offset_peer = utils.get_input_peer(await client.get_input_entity(self.offset_peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSavedDialogsRequest',
|
|
'offset_date': self.offset_date,
|
|
'offset_id': self.offset_id,
|
|
'offset_peer': self.offset_peer.to_dict() if isinstance(self.offset_peer, TLObject) else self.offset_peer,
|
|
'limit': self.limit,
|
|
'hash': self.hash,
|
|
'exclude_pinned': self.exclude_pinned
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x1a\xd2\x81S',
|
|
struct.pack('<I', (0 if self.exclude_pinned is None or self.exclude_pinned is False else 1)),
|
|
self.serialize_datetime(self.offset_date),
|
|
struct.pack('<i', self.offset_id),
|
|
self.offset_peer._bytes(),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_exclude_pinned = bool(flags & 1)
|
|
_offset_date = reader.tgread_date()
|
|
_offset_id = reader.read_int()
|
|
_offset_peer = reader.tgread_object()
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(offset_date=_offset_date, offset_id=_offset_id, offset_peer=_offset_peer, limit=_limit, hash=_hash, exclude_pinned=_exclude_pinned)
|
|
|
|
|
|
class GetSavedGifsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5cf09635
|
|
SUBCLASS_OF_ID = 0xa68b61f5
|
|
|
|
def __init__(self, hash: int):
|
|
"""
|
|
:returns messages.SavedGifs: Instance of either SavedGifsNotModified, SavedGifs.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSavedGifsRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'5\x96\xf0\\',
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class GetSavedHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3d9a414d
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', offset_id: int, offset_date: Optional[datetime], add_offset: int, limit: int, max_id: int, min_id: int, hash: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.offset_id = offset_id
|
|
self.offset_date = offset_date
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.hash = hash
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSavedHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'offset_id': self.offset_id,
|
|
'offset_date': self.offset_date,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'MA\x9a=',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.offset_id),
|
|
self.serialize_datetime(self.offset_date),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_offset_id = reader.read_int()
|
|
_offset_date = reader.tgread_date()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, offset_id=_offset_id, offset_date=_offset_date, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, hash=_hash)
|
|
|
|
|
|
class GetSavedReactionTagsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3637e05b
|
|
SUBCLASS_OF_ID = 0xa39b5be3
|
|
|
|
def __init__(self, hash: int, peer: Optional['TypeInputPeer']=None):
|
|
"""
|
|
:returns messages.SavedReactionTags: Instance of either SavedReactionTagsNotModified, SavedReactionTags.
|
|
"""
|
|
self.hash = hash
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
if self.peer:
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSavedReactionTagsRequest',
|
|
'hash': self.hash,
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'[\xe076',
|
|
struct.pack('<I', (0 if self.peer is None or self.peer is False else 1)),
|
|
b'' if self.peer is None or self.peer is False else (self.peer._bytes()),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
if flags & 1:
|
|
_peer = reader.tgread_object()
|
|
else:
|
|
_peer = None
|
|
_hash = reader.read_long()
|
|
return cls(hash=_hash, peer=_peer)
|
|
|
|
|
|
class GetScheduledHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf516760b
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', hash: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.hash = hash
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetScheduledHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x0bv\x16\xf5',
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, hash=_hash)
|
|
|
|
|
|
class GetScheduledMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbdbb0464
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int]):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetScheduledMessagesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'd\x04\xbb\xbd',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class GetSearchCountersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1bbcf300
|
|
SUBCLASS_OF_ID = 0x6bde3c6e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', filters: List['TypeMessagesFilter'], saved_peer_id: Optional['TypeInputPeer']=None, top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns Vector<messages.SearchCounter>: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.filters = filters
|
|
self.saved_peer_id = saved_peer_id
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.saved_peer_id:
|
|
self.saved_peer_id = utils.get_input_peer(await client.get_input_entity(self.saved_peer_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSearchCountersRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'filters': [] if self.filters is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.filters],
|
|
'saved_peer_id': self.saved_peer_id.to_dict() if isinstance(self.saved_peer_id, TLObject) else self.saved_peer_id,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x00\xf3\xbc\x1b',
|
|
struct.pack('<I', (0 if self.saved_peer_id is None or self.saved_peer_id is False else 4) | (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.saved_peer_id is None or self.saved_peer_id is False else (self.saved_peer_id._bytes()),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.filters)),b''.join(x._bytes() for x in self.filters),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 4:
|
|
_saved_peer_id = reader.tgread_object()
|
|
else:
|
|
_saved_peer_id = None
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
reader.read_int()
|
|
_filters = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_filters.append(_x)
|
|
|
|
return cls(peer=_peer, filters=_filters, saved_peer_id=_saved_peer_id, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class GetSearchResultsCalendarRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6aa3f6bd
|
|
SUBCLASS_OF_ID = 0x92c5640f
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', filter: 'TypeMessagesFilter', offset_id: int, offset_date: Optional[datetime], saved_peer_id: Optional['TypeInputPeer']=None):
|
|
"""
|
|
:returns messages.SearchResultsCalendar: Instance of SearchResultsCalendar.
|
|
"""
|
|
self.peer = peer
|
|
self.filter = filter
|
|
self.offset_id = offset_id
|
|
self.offset_date = offset_date
|
|
self.saved_peer_id = saved_peer_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.saved_peer_id:
|
|
self.saved_peer_id = utils.get_input_peer(await client.get_input_entity(self.saved_peer_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSearchResultsCalendarRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter,
|
|
'offset_id': self.offset_id,
|
|
'offset_date': self.offset_date,
|
|
'saved_peer_id': self.saved_peer_id.to_dict() if isinstance(self.saved_peer_id, TLObject) else self.saved_peer_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xbd\xf6\xa3j',
|
|
struct.pack('<I', (0 if self.saved_peer_id is None or self.saved_peer_id is False else 4)),
|
|
self.peer._bytes(),
|
|
b'' if self.saved_peer_id is None or self.saved_peer_id is False else (self.saved_peer_id._bytes()),
|
|
self.filter._bytes(),
|
|
struct.pack('<i', self.offset_id),
|
|
self.serialize_datetime(self.offset_date),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 4:
|
|
_saved_peer_id = reader.tgread_object()
|
|
else:
|
|
_saved_peer_id = None
|
|
_filter = reader.tgread_object()
|
|
_offset_id = reader.read_int()
|
|
_offset_date = reader.tgread_date()
|
|
return cls(peer=_peer, filter=_filter, offset_id=_offset_id, offset_date=_offset_date, saved_peer_id=_saved_peer_id)
|
|
|
|
|
|
class GetSearchResultsPositionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9c7f2f10
|
|
SUBCLASS_OF_ID = 0xd963708d
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', filter: 'TypeMessagesFilter', offset_id: int, limit: int, saved_peer_id: Optional['TypeInputPeer']=None):
|
|
"""
|
|
:returns messages.SearchResultsPositions: Instance of SearchResultsPositions.
|
|
"""
|
|
self.peer = peer
|
|
self.filter = filter
|
|
self.offset_id = offset_id
|
|
self.limit = limit
|
|
self.saved_peer_id = saved_peer_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.saved_peer_id:
|
|
self.saved_peer_id = utils.get_input_peer(await client.get_input_entity(self.saved_peer_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSearchResultsPositionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter,
|
|
'offset_id': self.offset_id,
|
|
'limit': self.limit,
|
|
'saved_peer_id': self.saved_peer_id.to_dict() if isinstance(self.saved_peer_id, TLObject) else self.saved_peer_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x10/\x7f\x9c',
|
|
struct.pack('<I', (0 if self.saved_peer_id is None or self.saved_peer_id is False else 4)),
|
|
self.peer._bytes(),
|
|
b'' if self.saved_peer_id is None or self.saved_peer_id is False else (self.saved_peer_id._bytes()),
|
|
self.filter._bytes(),
|
|
struct.pack('<i', self.offset_id),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 4:
|
|
_saved_peer_id = reader.tgread_object()
|
|
else:
|
|
_saved_peer_id = None
|
|
_filter = reader.tgread_object()
|
|
_offset_id = reader.read_int()
|
|
_limit = reader.read_int()
|
|
return cls(peer=_peer, filter=_filter, offset_id=_offset_id, limit=_limit, saved_peer_id=_saved_peer_id)
|
|
|
|
|
|
class GetSplitRangesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1cff7e08
|
|
SUBCLASS_OF_ID = 0x5ba52504
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSplitRangesRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x08~\xff\x1c',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetStickerSetRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xc8a0ec74
|
|
SUBCLASS_OF_ID = 0x9b704a5a
|
|
|
|
def __init__(self, stickerset: 'TypeInputStickerSet', hash: int):
|
|
"""
|
|
:returns messages.StickerSet: Instance of either StickerSet, StickerSetNotModified.
|
|
"""
|
|
self.stickerset = stickerset
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetStickerSetRequest',
|
|
'stickerset': self.stickerset.to_dict() if isinstance(self.stickerset, TLObject) else self.stickerset,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b't\xec\xa0\xc8',
|
|
self.stickerset._bytes(),
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_stickerset = reader.tgread_object()
|
|
_hash = reader.read_int()
|
|
return cls(stickerset=_stickerset, hash=_hash)
|
|
|
|
|
|
class GetStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd5a5d3a1
|
|
SUBCLASS_OF_ID = 0xd73bb9de
|
|
|
|
def __init__(self, emoticon: str, hash: int):
|
|
"""
|
|
:returns messages.Stickers: Instance of either StickersNotModified, Stickers.
|
|
"""
|
|
self.emoticon = emoticon
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetStickersRequest',
|
|
'emoticon': self.emoticon,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa1\xd3\xa5\xd5',
|
|
self.serialize_bytes(self.emoticon),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_emoticon = reader.tgread_string()
|
|
_hash = reader.read_long()
|
|
return cls(emoticon=_emoticon, hash=_hash)
|
|
|
|
|
|
class GetSuggestedDialogFiltersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa29cd42c
|
|
SUBCLASS_OF_ID = 0x7b296c39
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetSuggestedDialogFiltersRequest'
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b',\xd4\x9c\xa2',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
return cls()
|
|
|
|
|
|
class GetTopReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbb8125ba
|
|
SUBCLASS_OF_ID = 0xadc38324
|
|
|
|
def __init__(self, limit: int, hash: int):
|
|
"""
|
|
:returns messages.Reactions: Instance of either ReactionsNotModified, Reactions.
|
|
"""
|
|
self.limit = limit
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetTopReactionsRequest',
|
|
'limit': self.limit,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xba%\x81\xbb',
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_limit = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(limit=_limit, hash=_hash)
|
|
|
|
|
|
class GetUnreadMentionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf107e790
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', offset_id: int, add_offset: int, limit: int, max_id: int, min_id: int, top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.offset_id = offset_id
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetUnreadMentionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'offset_id': self.offset_id,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x90\xe7\x07\xf1',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
struct.pack('<i', self.offset_id),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
_offset_id = reader.read_int()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
return cls(peer=_peer, offset_id=_offset_id, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class GetUnreadReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3223495b
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', offset_id: int, add_offset: int, limit: int, max_id: int, min_id: int, top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.offset_id = offset_id
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetUnreadReactionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'offset_id': self.offset_id,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'[I#2',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
struct.pack('<i', self.offset_id),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
_offset_id = reader.read_int()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
return cls(peer=_peer, offset_id=_offset_id, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class GetWebPageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8d9692a3
|
|
SUBCLASS_OF_ID = 0x2cf8b154
|
|
|
|
def __init__(self, url: str, hash: int):
|
|
"""
|
|
:returns messages.WebPage: Instance of WebPage.
|
|
"""
|
|
self.url = url
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetWebPageRequest',
|
|
'url': self.url,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa3\x92\x96\x8d',
|
|
self.serialize_bytes(self.url),
|
|
struct.pack('<i', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_url = reader.tgread_string()
|
|
_hash = reader.read_int()
|
|
return cls(url=_url, hash=_hash)
|
|
|
|
|
|
class GetWebPagePreviewRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8b68b0cc
|
|
SUBCLASS_OF_ID = 0x476cbe32
|
|
|
|
def __init__(self, message: str, entities: Optional[List['TypeMessageEntity']]=None):
|
|
"""
|
|
:returns MessageMedia: Instance of either MessageMediaEmpty, MessageMediaPhoto, MessageMediaGeo, MessageMediaContact, MessageMediaUnsupported, MessageMediaDocument, MessageMediaWebPage, MessageMediaVenue, MessageMediaGame, MessageMediaInvoice, MessageMediaGeoLive, MessageMediaPoll, MessageMediaDice, MessageMediaStory, MessageMediaGiveaway, MessageMediaGiveawayResults.
|
|
"""
|
|
self.message = message
|
|
self.entities = entities
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'GetWebPagePreviewRequest',
|
|
'message': self.message,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xcc\xb0h\x8b',
|
|
struct.pack('<I', (0 if self.entities is None or self.entities is False else 8)),
|
|
self.serialize_bytes(self.message),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_message = reader.tgread_string()
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
return cls(message=_message, entities=_entities)
|
|
|
|
|
|
class HideAllChatJoinRequestsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe085f4ea
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', approved: Optional[bool]=None, link: Optional[str]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.approved = approved
|
|
self.link = link
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'HideAllChatJoinRequestsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'approved': self.approved,
|
|
'link': self.link
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xea\xf4\x85\xe0',
|
|
struct.pack('<I', (0 if self.approved is None or self.approved is False else 1) | (0 if self.link is None or self.link is False else 2)),
|
|
self.peer._bytes(),
|
|
b'' if self.link is None or self.link is False else (self.serialize_bytes(self.link)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_approved = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
if flags & 2:
|
|
_link = reader.tgread_string()
|
|
else:
|
|
_link = None
|
|
return cls(peer=_peer, approved=_approved, link=_link)
|
|
|
|
|
|
class HideChatJoinRequestRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7fe7e815
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', user_id: 'TypeInputUser', approved: Optional[bool]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.user_id = user_id
|
|
self.approved = approved
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'HideChatJoinRequestRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'approved': self.approved
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x15\xe8\xe7\x7f',
|
|
struct.pack('<I', (0 if self.approved is None or self.approved is False else 1)),
|
|
self.peer._bytes(),
|
|
self.user_id._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_approved = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
_user_id = reader.tgread_object()
|
|
return cls(peer=_peer, user_id=_user_id, approved=_approved)
|
|
|
|
|
|
class HidePeerSettingsBarRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4facb138
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'HidePeerSettingsBarRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'8\xb1\xacO',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class ImportChatInviteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6c50051c
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, hash: str):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ImportChatInviteRequest',
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x1c\x05Pl',
|
|
self.serialize_bytes(self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_hash = reader.tgread_string()
|
|
return cls(hash=_hash)
|
|
|
|
|
|
class InitHistoryImportRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x34090c3b
|
|
SUBCLASS_OF_ID = 0xb18bb50a
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', file: 'TypeInputFile', media_count: int):
|
|
"""
|
|
:returns messages.HistoryImport: Instance of HistoryImport.
|
|
"""
|
|
self.peer = peer
|
|
self.file = file
|
|
self.media_count = media_count
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'InitHistoryImportRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'file': self.file.to_dict() if isinstance(self.file, TLObject) else self.file,
|
|
'media_count': self.media_count
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b';\x0c\t4',
|
|
self.peer._bytes(),
|
|
self.file._bytes(),
|
|
struct.pack('<i', self.media_count),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_file = reader.tgread_object()
|
|
_media_count = reader.read_int()
|
|
return cls(peer=_peer, file=_file, media_count=_media_count)
|
|
|
|
|
|
class InstallStickerSetRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xc78fe460
|
|
SUBCLASS_OF_ID = 0x67cb3fe8
|
|
|
|
def __init__(self, stickerset: 'TypeInputStickerSet', archived: bool):
|
|
"""
|
|
:returns messages.StickerSetInstallResult: Instance of either StickerSetInstallResultSuccess, StickerSetInstallResultArchive.
|
|
"""
|
|
self.stickerset = stickerset
|
|
self.archived = archived
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'InstallStickerSetRequest',
|
|
'stickerset': self.stickerset.to_dict() if isinstance(self.stickerset, TLObject) else self.stickerset,
|
|
'archived': self.archived
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'`\xe4\x8f\xc7',
|
|
self.stickerset._bytes(),
|
|
b'\xb5ur\x99' if self.archived else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_stickerset = reader.tgread_object()
|
|
_archived = reader.tgread_bool()
|
|
return cls(stickerset=_stickerset, archived=_archived)
|
|
|
|
|
|
class MarkDialogUnreadRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xc286d98f
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputDialogPeer', unread: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.unread = unread
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = await client._get_input_dialog(self.peer)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'MarkDialogUnreadRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'unread': self.unread
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x8f\xd9\x86\xc2',
|
|
struct.pack('<I', (0 if self.unread is None or self.unread is False else 1)),
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_unread = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer, unread=_unread)
|
|
|
|
|
|
class MigrateChatRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa2875319
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, chat_id: int):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.chat_id = chat_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'MigrateChatRequest',
|
|
'chat_id': self.chat_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x19S\x87\xa2',
|
|
struct.pack('<q', self.chat_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_chat_id = reader.read_long()
|
|
return cls(chat_id=_chat_id)
|
|
|
|
|
|
class ProlongWebViewRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb0d81a83
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', bot: 'TypeInputUser', query_id: int, silent: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, send_as: Optional['TypeInputPeer']=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.bot = bot
|
|
self.query_id = query_id
|
|
self.silent = silent
|
|
self.reply_to = reply_to
|
|
self.send_as = send_as
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ProlongWebViewRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'query_id': self.query_id,
|
|
'silent': self.silent,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x83\x1a\xd8\xb0',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 32) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.send_as is None or self.send_as is False else 8192)),
|
|
self.peer._bytes(),
|
|
self.bot._bytes(),
|
|
struct.pack('<q', self.query_id),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 32)
|
|
_peer = reader.tgread_object()
|
|
_bot = reader.tgread_object()
|
|
_query_id = reader.read_long()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
return cls(peer=_peer, bot=_bot, query_id=_query_id, silent=_silent, reply_to=_reply_to, send_as=_send_as)
|
|
|
|
|
|
class RateTranscribedAudioRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7f1d072f
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, transcription_id: int, good: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.transcription_id = transcription_id
|
|
self.good = good
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RateTranscribedAudioRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'transcription_id': self.transcription_id,
|
|
'good': self.good
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'/\x07\x1d\x7f',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
struct.pack('<q', self.transcription_id),
|
|
b'\xb5ur\x99' if self.good else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
_transcription_id = reader.read_long()
|
|
_good = reader.tgread_bool()
|
|
return cls(peer=_peer, msg_id=_msg_id, transcription_id=_transcription_id, good=_good)
|
|
|
|
|
|
class ReadDiscussionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf731a9f4
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, read_max_id: int):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.read_max_id = read_max_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadDiscussionRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'read_max_id': self.read_max_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf4\xa91\xf7',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
struct.pack('<i', self.read_max_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
_read_max_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id, read_max_id=_read_max_id)
|
|
|
|
|
|
class ReadEncryptedHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7f4b690a
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', max_date: Optional[datetime]):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.max_date = max_date
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadEncryptedHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'max_date': self.max_date
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\niK\x7f',
|
|
self.peer._bytes(),
|
|
self.serialize_datetime(self.max_date),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_max_date = reader.tgread_date()
|
|
return cls(peer=_peer, max_date=_max_date)
|
|
|
|
|
|
class ReadFeaturedStickersRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5b118126
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: List[int]):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadFeaturedStickersRequest',
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'&\x81\x11[',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<q', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_id.append(_x)
|
|
|
|
return cls(id=_id)
|
|
|
|
|
|
class ReadHistoryRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe306d3a
|
|
SUBCLASS_OF_ID = 0xced3c06e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', max_id: int):
|
|
"""
|
|
:returns messages.AffectedMessages: Instance of AffectedMessages.
|
|
"""
|
|
self.peer = peer
|
|
self.max_id = max_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadHistoryRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'max_id': self.max_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b':m0\x0e',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.max_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_max_id = reader.read_int()
|
|
return cls(peer=_peer, max_id=_max_id)
|
|
|
|
|
|
class ReadMentionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x36e5bf4d
|
|
SUBCLASS_OF_ID = 0x2c49c116
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.AffectedHistory: Instance of AffectedHistory.
|
|
"""
|
|
self.peer = peer
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadMentionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'M\xbf\xe56',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
return cls(peer=_peer, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class ReadMessageContentsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x36a73f77
|
|
SUBCLASS_OF_ID = 0xced3c06e
|
|
|
|
def __init__(self, id: List[int]):
|
|
"""
|
|
:returns messages.AffectedMessages: Instance of AffectedMessages.
|
|
"""
|
|
self.id = id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadMessageContentsRequest',
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'w?\xa76',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(id=_id)
|
|
|
|
|
|
class ReadReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x54aa7f8e
|
|
SUBCLASS_OF_ID = 0x2c49c116
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.AffectedHistory: Instance of AffectedHistory.
|
|
"""
|
|
self.peer = peer
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReadReactionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x8e\x7f\xaaT',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
return cls(peer=_peer, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class ReceivedMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5a954c0
|
|
SUBCLASS_OF_ID = 0x8565f897
|
|
|
|
def __init__(self, max_id: int):
|
|
"""
|
|
:returns Vector<ReceivedNotifyMessage>: This type has no constructors.
|
|
"""
|
|
self.max_id = max_id
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReceivedMessagesRequest',
|
|
'max_id': self.max_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc0T\xa9\x05',
|
|
struct.pack('<i', self.max_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_max_id = reader.read_int()
|
|
return cls(max_id=_max_id)
|
|
|
|
|
|
class ReceivedQueueRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x55a5bb66
|
|
SUBCLASS_OF_ID = 0x8918e168
|
|
|
|
def __init__(self, max_qts: int):
|
|
"""
|
|
:returns Vector<long>: This type has no constructors.
|
|
"""
|
|
self.max_qts = max_qts
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReceivedQueueRequest',
|
|
'max_qts': self.max_qts
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'f\xbb\xa5U',
|
|
struct.pack('<i', self.max_qts),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_max_qts = reader.read_int()
|
|
return cls(max_qts=_max_qts)
|
|
|
|
@staticmethod
|
|
def read_result(reader):
|
|
reader.read_int() # Vector ID
|
|
return [reader.read_long() for _ in range(reader.read_int())]
|
|
|
|
|
|
class ReorderPinnedDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3b1adf37
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, folder_id: int, order: List['TypeInputDialogPeer'], force: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.folder_id = folder_id
|
|
self.order = order
|
|
self.force = force
|
|
|
|
async def resolve(self, client, utils):
|
|
_tmp = []
|
|
for _x in self.order:
|
|
_tmp.append(await client._get_input_dialog(_x))
|
|
|
|
self.order = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReorderPinnedDialogsRequest',
|
|
'folder_id': self.folder_id,
|
|
'order': [] if self.order is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.order],
|
|
'force': self.force
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'7\xdf\x1a;',
|
|
struct.pack('<I', (0 if self.force is None or self.force is False else 1)),
|
|
struct.pack('<i', self.folder_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.order)),b''.join(x._bytes() for x in self.order),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_force = bool(flags & 1)
|
|
_folder_id = reader.read_int()
|
|
reader.read_int()
|
|
_order = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_order.append(_x)
|
|
|
|
return cls(folder_id=_folder_id, order=_order, force=_force)
|
|
|
|
|
|
class ReorderPinnedSavedDialogsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8b716587
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, order: List['TypeInputDialogPeer'], force: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.order = order
|
|
self.force = force
|
|
|
|
async def resolve(self, client, utils):
|
|
_tmp = []
|
|
for _x in self.order:
|
|
_tmp.append(await client._get_input_dialog(_x))
|
|
|
|
self.order = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReorderPinnedSavedDialogsRequest',
|
|
'order': [] if self.order is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.order],
|
|
'force': self.force
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x87eq\x8b',
|
|
struct.pack('<I', (0 if self.force is None or self.force is False else 1)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.order)),b''.join(x._bytes() for x in self.order),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_force = bool(flags & 1)
|
|
reader.read_int()
|
|
_order = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_order.append(_x)
|
|
|
|
return cls(order=_order, force=_force)
|
|
|
|
|
|
class ReorderQuickRepliesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x60331907
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, order: List[int]):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.order = order
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReorderQuickRepliesRequest',
|
|
'order': [] if self.order is None else self.order[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x07\x193`',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.order)),b''.join(struct.pack('<i', x) for x in self.order),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_order = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_order.append(_x)
|
|
|
|
return cls(order=_order)
|
|
|
|
|
|
class ReorderStickerSetsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x78337739
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, order: List[int], masks: Optional[bool]=None, emojis: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.order = order
|
|
self.masks = masks
|
|
self.emojis = emojis
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReorderStickerSetsRequest',
|
|
'order': [] if self.order is None else self.order[:],
|
|
'masks': self.masks,
|
|
'emojis': self.emojis
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'9w3x',
|
|
struct.pack('<I', (0 if self.masks is None or self.masks is False else 1) | (0 if self.emojis is None or self.emojis is False else 2)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.order)),b''.join(struct.pack('<q', x) for x in self.order),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_masks = bool(flags & 1)
|
|
_emojis = bool(flags & 2)
|
|
reader.read_int()
|
|
_order = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_order.append(_x)
|
|
|
|
return cls(order=_order, masks=_masks, emojis=_emojis)
|
|
|
|
|
|
class ReportRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8953ab4e
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int], reason: 'TypeReportReason', message: str):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.reason = reason
|
|
self.message = message
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReportRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:],
|
|
'reason': self.reason.to_dict() if isinstance(self.reason, TLObject) else self.reason,
|
|
'message': self.message
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'N\xabS\x89',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
self.reason._bytes(),
|
|
self.serialize_bytes(self.message),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
_reason = reader.tgread_object()
|
|
_message = reader.tgread_string()
|
|
return cls(peer=_peer, id=_id, reason=_reason, message=_message)
|
|
|
|
|
|
class ReportEncryptedSpamRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4b0c8c0f
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReportEncryptedSpamRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x0f\x8c\x0cK',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class ReportReactionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3f64c076
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, reaction_peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.reaction_peer = reaction_peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.reaction_peer = utils.get_input_peer(await client.get_input_entity(self.reaction_peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReportReactionRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'reaction_peer': self.reaction_peer.to_dict() if isinstance(self.reaction_peer, TLObject) else self.reaction_peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'v\xc0d?',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
self.reaction_peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
_reaction_peer = reader.tgread_object()
|
|
return cls(peer=_peer, id=_id, reaction_peer=_reaction_peer)
|
|
|
|
|
|
class ReportSpamRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xcf1592db
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ReportSpamRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xdb\x92\x15\xcf',
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer)
|
|
|
|
|
|
class RequestAppWebViewRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8c5a3b3c
|
|
SUBCLASS_OF_ID = 0x1c24a413
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', app: 'TypeInputBotApp', platform: str, write_allowed: Optional[bool]=None, start_param: Optional[str]=None, theme_params: Optional['TypeDataJSON']=None):
|
|
"""
|
|
:returns AppWebViewResult: Instance of AppWebViewResultUrl.
|
|
"""
|
|
self.peer = peer
|
|
self.app = app
|
|
self.platform = platform
|
|
self.write_allowed = write_allowed
|
|
self.start_param = start_param
|
|
self.theme_params = theme_params
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RequestAppWebViewRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'app': self.app.to_dict() if isinstance(self.app, TLObject) else self.app,
|
|
'platform': self.platform,
|
|
'write_allowed': self.write_allowed,
|
|
'start_param': self.start_param,
|
|
'theme_params': self.theme_params.to_dict() if isinstance(self.theme_params, TLObject) else self.theme_params
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'<;Z\x8c',
|
|
struct.pack('<I', (0 if self.write_allowed is None or self.write_allowed is False else 1) | (0 if self.start_param is None or self.start_param is False else 2) | (0 if self.theme_params is None or self.theme_params is False else 4)),
|
|
self.peer._bytes(),
|
|
self.app._bytes(),
|
|
b'' if self.start_param is None or self.start_param is False else (self.serialize_bytes(self.start_param)),
|
|
b'' if self.theme_params is None or self.theme_params is False else (self.theme_params._bytes()),
|
|
self.serialize_bytes(self.platform),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_write_allowed = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
_app = reader.tgread_object()
|
|
if flags & 2:
|
|
_start_param = reader.tgread_string()
|
|
else:
|
|
_start_param = None
|
|
if flags & 4:
|
|
_theme_params = reader.tgread_object()
|
|
else:
|
|
_theme_params = None
|
|
_platform = reader.tgread_string()
|
|
return cls(peer=_peer, app=_app, platform=_platform, write_allowed=_write_allowed, start_param=_start_param, theme_params=_theme_params)
|
|
|
|
|
|
class RequestEncryptionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf64daf43
|
|
SUBCLASS_OF_ID = 0x6d28a37a
|
|
|
|
def __init__(self, user_id: 'TypeInputUser', g_a: bytes, random_id: int=None):
|
|
"""
|
|
:returns EncryptedChat: Instance of either EncryptedChatEmpty, EncryptedChatWaiting, EncryptedChatRequested, EncryptedChat, EncryptedChatDiscarded.
|
|
"""
|
|
self.user_id = user_id
|
|
self.g_a = g_a
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(4), 'big', signed=True)
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RequestEncryptionRequest',
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'g_a': self.g_a,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'C\xafM\xf6',
|
|
self.user_id._bytes(),
|
|
struct.pack('<i', self.random_id),
|
|
self.serialize_bytes(self.g_a),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_user_id = reader.tgread_object()
|
|
_random_id = reader.read_int()
|
|
_g_a = reader.tgread_bytes()
|
|
return cls(user_id=_user_id, g_a=_g_a, random_id=_random_id)
|
|
|
|
|
|
class RequestSimpleWebViewRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1a46500a
|
|
SUBCLASS_OF_ID = 0x15eee3db
|
|
|
|
def __init__(self, bot: 'TypeInputUser', platform: str, from_switch_webview: Optional[bool]=None, from_side_menu: Optional[bool]=None, url: Optional[str]=None, start_param: Optional[str]=None, theme_params: Optional['TypeDataJSON']=None):
|
|
"""
|
|
:returns SimpleWebViewResult: Instance of SimpleWebViewResultUrl.
|
|
"""
|
|
self.bot = bot
|
|
self.platform = platform
|
|
self.from_switch_webview = from_switch_webview
|
|
self.from_side_menu = from_side_menu
|
|
self.url = url
|
|
self.start_param = start_param
|
|
self.theme_params = theme_params
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RequestSimpleWebViewRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'platform': self.platform,
|
|
'from_switch_webview': self.from_switch_webview,
|
|
'from_side_menu': self.from_side_menu,
|
|
'url': self.url,
|
|
'start_param': self.start_param,
|
|
'theme_params': self.theme_params.to_dict() if isinstance(self.theme_params, TLObject) else self.theme_params
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\nPF\x1a',
|
|
struct.pack('<I', (0 if self.from_switch_webview is None or self.from_switch_webview is False else 2) | (0 if self.from_side_menu is None or self.from_side_menu is False else 4) | (0 if self.url is None or self.url is False else 8) | (0 if self.start_param is None or self.start_param is False else 16) | (0 if self.theme_params is None or self.theme_params is False else 1)),
|
|
self.bot._bytes(),
|
|
b'' if self.url is None or self.url is False else (self.serialize_bytes(self.url)),
|
|
b'' if self.start_param is None or self.start_param is False else (self.serialize_bytes(self.start_param)),
|
|
b'' if self.theme_params is None or self.theme_params is False else (self.theme_params._bytes()),
|
|
self.serialize_bytes(self.platform),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_from_switch_webview = bool(flags & 2)
|
|
_from_side_menu = bool(flags & 4)
|
|
_bot = reader.tgread_object()
|
|
if flags & 8:
|
|
_url = reader.tgread_string()
|
|
else:
|
|
_url = None
|
|
if flags & 16:
|
|
_start_param = reader.tgread_string()
|
|
else:
|
|
_start_param = None
|
|
if flags & 1:
|
|
_theme_params = reader.tgread_object()
|
|
else:
|
|
_theme_params = None
|
|
_platform = reader.tgread_string()
|
|
return cls(bot=_bot, platform=_platform, from_switch_webview=_from_switch_webview, from_side_menu=_from_side_menu, url=_url, start_param=_start_param, theme_params=_theme_params)
|
|
|
|
|
|
class RequestUrlAuthRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x198fb446
|
|
SUBCLASS_OF_ID = 0x7765cb1e
|
|
|
|
def __init__(self, peer: Optional['TypeInputPeer']=None, msg_id: Optional[int]=None, button_id: Optional[int]=None, url: Optional[str]=None):
|
|
"""
|
|
:returns UrlAuthResult: Instance of either UrlAuthResultRequest, UrlAuthResultAccepted, UrlAuthResultDefault.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.button_id = button_id
|
|
self.url = url
|
|
|
|
async def resolve(self, client, utils):
|
|
if self.peer:
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RequestUrlAuthRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'button_id': self.button_id,
|
|
'url': self.url
|
|
}
|
|
|
|
def _bytes(self):
|
|
assert ((self.peer or self.peer is not None) and (self.msg_id or self.msg_id is not None) and (self.button_id or self.button_id is not None)) or ((self.peer is None or self.peer is False) and (self.msg_id is None or self.msg_id is False) and (self.button_id is None or self.button_id is False)), 'peer, msg_id, button_id parameters must all be False-y (like None) or all me True-y'
|
|
return b''.join((
|
|
b'F\xb4\x8f\x19',
|
|
struct.pack('<I', (0 if self.peer is None or self.peer is False else 2) | (0 if self.msg_id is None or self.msg_id is False else 2) | (0 if self.button_id is None or self.button_id is False else 2) | (0 if self.url is None or self.url is False else 4)),
|
|
b'' if self.peer is None or self.peer is False else (self.peer._bytes()),
|
|
b'' if self.msg_id is None or self.msg_id is False else (struct.pack('<i', self.msg_id)),
|
|
b'' if self.button_id is None or self.button_id is False else (struct.pack('<i', self.button_id)),
|
|
b'' if self.url is None or self.url is False else (self.serialize_bytes(self.url)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
if flags & 2:
|
|
_peer = reader.tgread_object()
|
|
else:
|
|
_peer = None
|
|
if flags & 2:
|
|
_msg_id = reader.read_int()
|
|
else:
|
|
_msg_id = None
|
|
if flags & 2:
|
|
_button_id = reader.read_int()
|
|
else:
|
|
_button_id = None
|
|
if flags & 4:
|
|
_url = reader.tgread_string()
|
|
else:
|
|
_url = None
|
|
return cls(peer=_peer, msg_id=_msg_id, button_id=_button_id, url=_url)
|
|
|
|
|
|
class RequestWebViewRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x269dc2c1
|
|
SUBCLASS_OF_ID = 0x93cea746
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', bot: 'TypeInputUser', platform: str, from_bot_menu: Optional[bool]=None, silent: Optional[bool]=None, url: Optional[str]=None, start_param: Optional[str]=None, theme_params: Optional['TypeDataJSON']=None, reply_to: Optional['TypeInputReplyTo']=None, send_as: Optional['TypeInputPeer']=None):
|
|
"""
|
|
:returns WebViewResult: Instance of WebViewResultUrl.
|
|
"""
|
|
self.peer = peer
|
|
self.bot = bot
|
|
self.platform = platform
|
|
self.from_bot_menu = from_bot_menu
|
|
self.silent = silent
|
|
self.url = url
|
|
self.start_param = start_param
|
|
self.theme_params = theme_params
|
|
self.reply_to = reply_to
|
|
self.send_as = send_as
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'RequestWebViewRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'platform': self.platform,
|
|
'from_bot_menu': self.from_bot_menu,
|
|
'silent': self.silent,
|
|
'url': self.url,
|
|
'start_param': self.start_param,
|
|
'theme_params': self.theme_params.to_dict() if isinstance(self.theme_params, TLObject) else self.theme_params,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc1\xc2\x9d&',
|
|
struct.pack('<I', (0 if self.from_bot_menu is None or self.from_bot_menu is False else 16) | (0 if self.silent is None or self.silent is False else 32) | (0 if self.url is None or self.url is False else 2) | (0 if self.start_param is None or self.start_param is False else 8) | (0 if self.theme_params is None or self.theme_params is False else 4) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.send_as is None or self.send_as is False else 8192)),
|
|
self.peer._bytes(),
|
|
self.bot._bytes(),
|
|
b'' if self.url is None or self.url is False else (self.serialize_bytes(self.url)),
|
|
b'' if self.start_param is None or self.start_param is False else (self.serialize_bytes(self.start_param)),
|
|
b'' if self.theme_params is None or self.theme_params is False else (self.theme_params._bytes()),
|
|
self.serialize_bytes(self.platform),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_from_bot_menu = bool(flags & 16)
|
|
_silent = bool(flags & 32)
|
|
_peer = reader.tgread_object()
|
|
_bot = reader.tgread_object()
|
|
if flags & 2:
|
|
_url = reader.tgread_string()
|
|
else:
|
|
_url = None
|
|
if flags & 8:
|
|
_start_param = reader.tgread_string()
|
|
else:
|
|
_start_param = None
|
|
if flags & 4:
|
|
_theme_params = reader.tgread_object()
|
|
else:
|
|
_theme_params = None
|
|
_platform = reader.tgread_string()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
return cls(peer=_peer, bot=_bot, platform=_platform, from_bot_menu=_from_bot_menu, silent=_silent, url=_url, start_param=_start_param, theme_params=_theme_params, reply_to=_reply_to, send_as=_send_as)
|
|
|
|
|
|
class SaveDefaultSendAsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xccfddf96
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', send_as: 'TypeInputPeer'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.send_as = send_as
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SaveDefaultSendAsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x96\xdf\xfd\xcc',
|
|
self.peer._bytes(),
|
|
self.send_as._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_send_as = reader.tgread_object()
|
|
return cls(peer=_peer, send_as=_send_as)
|
|
|
|
|
|
class SaveDraftRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7ff3b806
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', message: str, no_webpage: Optional[bool]=None, invert_media: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, entities: Optional[List['TypeMessageEntity']]=None, media: Optional['TypeInputMedia']=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.message = message
|
|
self.no_webpage = no_webpage
|
|
self.invert_media = invert_media
|
|
self.reply_to = reply_to
|
|
self.entities = entities
|
|
self.media = media
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.media:
|
|
self.media = utils.get_input_media(self.media)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SaveDraftRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'message': self.message,
|
|
'no_webpage': self.no_webpage,
|
|
'invert_media': self.invert_media,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities],
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x06\xb8\xf3\x7f',
|
|
struct.pack('<I', (0 if self.no_webpage is None or self.no_webpage is False else 2) | (0 if self.invert_media is None or self.invert_media is False else 64) | (0 if self.reply_to is None or self.reply_to is False else 16) | (0 if self.entities is None or self.entities is False else 8) | (0 if self.media is None or self.media is False else 32)),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.message),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
b'' if self.media is None or self.media is False else (self.media._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_no_webpage = bool(flags & 2)
|
|
_invert_media = bool(flags & 64)
|
|
if flags & 16:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
_peer = reader.tgread_object()
|
|
_message = reader.tgread_string()
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
if flags & 32:
|
|
_media = reader.tgread_object()
|
|
else:
|
|
_media = None
|
|
return cls(peer=_peer, message=_message, no_webpage=_no_webpage, invert_media=_invert_media, reply_to=_reply_to, entities=_entities, media=_media)
|
|
|
|
|
|
class SaveGifRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x327a30cb
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: 'TypeInputDocument', unsave: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.unsave = unsave
|
|
|
|
async def resolve(self, client, utils):
|
|
self.id = utils.get_input_document(self.id)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SaveGifRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'unsave': self.unsave
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xcb0z2',
|
|
self.id._bytes(),
|
|
b'\xb5ur\x99' if self.unsave else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_id = reader.tgread_object()
|
|
_unsave = reader.tgread_bool()
|
|
return cls(id=_id, unsave=_unsave)
|
|
|
|
|
|
class SaveRecentStickerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x392718f8
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: 'TypeInputDocument', unsave: bool, attached: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.unsave = unsave
|
|
self.attached = attached
|
|
|
|
async def resolve(self, client, utils):
|
|
self.id = utils.get_input_document(self.id)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SaveRecentStickerRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'unsave': self.unsave,
|
|
'attached': self.attached
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b"\xf8\x18'9",
|
|
struct.pack('<I', (0 if self.attached is None or self.attached is False else 1)),
|
|
self.id._bytes(),
|
|
b'\xb5ur\x99' if self.unsave else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_attached = bool(flags & 1)
|
|
_id = reader.tgread_object()
|
|
_unsave = reader.tgread_bool()
|
|
return cls(id=_id, unsave=_unsave, attached=_attached)
|
|
|
|
|
|
class SearchRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x29ee847a
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', q: str, filter: 'TypeMessagesFilter', min_date: Optional[datetime], max_date: Optional[datetime], offset_id: int, add_offset: int, limit: int, max_id: int, min_id: int, hash: int, from_id: Optional['TypeInputPeer']=None, saved_peer_id: Optional['TypeInputPeer']=None, saved_reaction: Optional[List['TypeReaction']]=None, top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.peer = peer
|
|
self.q = q
|
|
self.filter = filter
|
|
self.min_date = min_date
|
|
self.max_date = max_date
|
|
self.offset_id = offset_id
|
|
self.add_offset = add_offset
|
|
self.limit = limit
|
|
self.max_id = max_id
|
|
self.min_id = min_id
|
|
self.hash = hash
|
|
self.from_id = from_id
|
|
self.saved_peer_id = saved_peer_id
|
|
self.saved_reaction = saved_reaction
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.from_id:
|
|
self.from_id = utils.get_input_peer(await client.get_input_entity(self.from_id))
|
|
|
|
if self.saved_peer_id:
|
|
self.saved_peer_id = utils.get_input_peer(await client.get_input_entity(self.saved_peer_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'q': self.q,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter,
|
|
'min_date': self.min_date,
|
|
'max_date': self.max_date,
|
|
'offset_id': self.offset_id,
|
|
'add_offset': self.add_offset,
|
|
'limit': self.limit,
|
|
'max_id': self.max_id,
|
|
'min_id': self.min_id,
|
|
'hash': self.hash,
|
|
'from_id': self.from_id.to_dict() if isinstance(self.from_id, TLObject) else self.from_id,
|
|
'saved_peer_id': self.saved_peer_id.to_dict() if isinstance(self.saved_peer_id, TLObject) else self.saved_peer_id,
|
|
'saved_reaction': [] if self.saved_reaction is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.saved_reaction],
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'z\x84\xee)',
|
|
struct.pack('<I', (0 if self.from_id is None or self.from_id is False else 1) | (0 if self.saved_peer_id is None or self.saved_peer_id is False else 4) | (0 if self.saved_reaction is None or self.saved_reaction is False else 8) | (0 if self.top_msg_id is None or self.top_msg_id is False else 2)),
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.q),
|
|
b'' if self.from_id is None or self.from_id is False else (self.from_id._bytes()),
|
|
b'' if self.saved_peer_id is None or self.saved_peer_id is False else (self.saved_peer_id._bytes()),
|
|
b'' if self.saved_reaction is None or self.saved_reaction is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.saved_reaction)),b''.join(x._bytes() for x in self.saved_reaction))),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
self.filter._bytes(),
|
|
self.serialize_datetime(self.min_date),
|
|
self.serialize_datetime(self.max_date),
|
|
struct.pack('<i', self.offset_id),
|
|
struct.pack('<i', self.add_offset),
|
|
struct.pack('<i', self.limit),
|
|
struct.pack('<i', self.max_id),
|
|
struct.pack('<i', self.min_id),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
_q = reader.tgread_string()
|
|
if flags & 1:
|
|
_from_id = reader.tgread_object()
|
|
else:
|
|
_from_id = None
|
|
if flags & 4:
|
|
_saved_peer_id = reader.tgread_object()
|
|
else:
|
|
_saved_peer_id = None
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_saved_reaction = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_saved_reaction.append(_x)
|
|
|
|
else:
|
|
_saved_reaction = None
|
|
if flags & 2:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
_filter = reader.tgread_object()
|
|
_min_date = reader.tgread_date()
|
|
_max_date = reader.tgread_date()
|
|
_offset_id = reader.read_int()
|
|
_add_offset = reader.read_int()
|
|
_limit = reader.read_int()
|
|
_max_id = reader.read_int()
|
|
_min_id = reader.read_int()
|
|
_hash = reader.read_long()
|
|
return cls(peer=_peer, q=_q, filter=_filter, min_date=_min_date, max_date=_max_date, offset_id=_offset_id, add_offset=_add_offset, limit=_limit, max_id=_max_id, min_id=_min_id, hash=_hash, from_id=_from_id, saved_peer_id=_saved_peer_id, saved_reaction=_saved_reaction, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class SearchCustomEmojiRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x2c11c0d7
|
|
SUBCLASS_OF_ID = 0xbcef6aba
|
|
|
|
def __init__(self, emoticon: str, hash: int):
|
|
"""
|
|
:returns EmojiList: Instance of either EmojiListNotModified, EmojiList.
|
|
"""
|
|
self.emoticon = emoticon
|
|
self.hash = hash
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchCustomEmojiRequest',
|
|
'emoticon': self.emoticon,
|
|
'hash': self.hash
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd7\xc0\x11,',
|
|
self.serialize_bytes(self.emoticon),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_emoticon = reader.tgread_string()
|
|
_hash = reader.read_long()
|
|
return cls(emoticon=_emoticon, hash=_hash)
|
|
|
|
|
|
class SearchEmojiStickerSetsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x92b4494c
|
|
SUBCLASS_OF_ID = 0x40df361
|
|
|
|
def __init__(self, q: str, hash: int, exclude_featured: Optional[bool]=None):
|
|
"""
|
|
:returns messages.FoundStickerSets: Instance of either FoundStickerSetsNotModified, FoundStickerSets.
|
|
"""
|
|
self.q = q
|
|
self.hash = hash
|
|
self.exclude_featured = exclude_featured
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchEmojiStickerSetsRequest',
|
|
'q': self.q,
|
|
'hash': self.hash,
|
|
'exclude_featured': self.exclude_featured
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'LI\xb4\x92',
|
|
struct.pack('<I', (0 if self.exclude_featured is None or self.exclude_featured is False else 1)),
|
|
self.serialize_bytes(self.q),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_exclude_featured = bool(flags & 1)
|
|
_q = reader.tgread_string()
|
|
_hash = reader.read_long()
|
|
return cls(q=_q, hash=_hash, exclude_featured=_exclude_featured)
|
|
|
|
|
|
class SearchGlobalRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4bc6589a
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, q: str, filter: 'TypeMessagesFilter', min_date: Optional[datetime], max_date: Optional[datetime], offset_rate: int, offset_peer: 'TypeInputPeer', offset_id: int, limit: int, broadcasts_only: Optional[bool]=None, folder_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.q = q
|
|
self.filter = filter
|
|
self.min_date = min_date
|
|
self.max_date = max_date
|
|
self.offset_rate = offset_rate
|
|
self.offset_peer = offset_peer
|
|
self.offset_id = offset_id
|
|
self.limit = limit
|
|
self.broadcasts_only = broadcasts_only
|
|
self.folder_id = folder_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.offset_peer = utils.get_input_peer(await client.get_input_entity(self.offset_peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchGlobalRequest',
|
|
'q': self.q,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter,
|
|
'min_date': self.min_date,
|
|
'max_date': self.max_date,
|
|
'offset_rate': self.offset_rate,
|
|
'offset_peer': self.offset_peer.to_dict() if isinstance(self.offset_peer, TLObject) else self.offset_peer,
|
|
'offset_id': self.offset_id,
|
|
'limit': self.limit,
|
|
'broadcasts_only': self.broadcasts_only,
|
|
'folder_id': self.folder_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x9aX\xc6K',
|
|
struct.pack('<I', (0 if self.broadcasts_only is None or self.broadcasts_only is False else 2) | (0 if self.folder_id is None or self.folder_id is False else 1)),
|
|
b'' if self.folder_id is None or self.folder_id is False else (struct.pack('<i', self.folder_id)),
|
|
self.serialize_bytes(self.q),
|
|
self.filter._bytes(),
|
|
self.serialize_datetime(self.min_date),
|
|
self.serialize_datetime(self.max_date),
|
|
struct.pack('<i', self.offset_rate),
|
|
self.offset_peer._bytes(),
|
|
struct.pack('<i', self.offset_id),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_broadcasts_only = bool(flags & 2)
|
|
if flags & 1:
|
|
_folder_id = reader.read_int()
|
|
else:
|
|
_folder_id = None
|
|
_q = reader.tgread_string()
|
|
_filter = reader.tgread_object()
|
|
_min_date = reader.tgread_date()
|
|
_max_date = reader.tgread_date()
|
|
_offset_rate = reader.read_int()
|
|
_offset_peer = reader.tgread_object()
|
|
_offset_id = reader.read_int()
|
|
_limit = reader.read_int()
|
|
return cls(q=_q, filter=_filter, min_date=_min_date, max_date=_max_date, offset_rate=_offset_rate, offset_peer=_offset_peer, offset_id=_offset_id, limit=_limit, broadcasts_only=_broadcasts_only, folder_id=_folder_id)
|
|
|
|
|
|
class SearchSentMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x107e31a0
|
|
SUBCLASS_OF_ID = 0xd4b40b5e
|
|
|
|
def __init__(self, q: str, filter: 'TypeMessagesFilter', limit: int):
|
|
"""
|
|
:returns messages.Messages: Instance of either Messages, MessagesSlice, ChannelMessages, MessagesNotModified.
|
|
"""
|
|
self.q = q
|
|
self.filter = filter
|
|
self.limit = limit
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchSentMediaRequest',
|
|
'q': self.q,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter,
|
|
'limit': self.limit
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa01~\x10',
|
|
self.serialize_bytes(self.q),
|
|
self.filter._bytes(),
|
|
struct.pack('<i', self.limit),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_q = reader.tgread_string()
|
|
_filter = reader.tgread_object()
|
|
_limit = reader.read_int()
|
|
return cls(q=_q, filter=_filter, limit=_limit)
|
|
|
|
|
|
class SearchStickerSetsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x35705b8a
|
|
SUBCLASS_OF_ID = 0x40df361
|
|
|
|
def __init__(self, q: str, hash: int, exclude_featured: Optional[bool]=None):
|
|
"""
|
|
:returns messages.FoundStickerSets: Instance of either FoundStickerSetsNotModified, FoundStickerSets.
|
|
"""
|
|
self.q = q
|
|
self.hash = hash
|
|
self.exclude_featured = exclude_featured
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SearchStickerSetsRequest',
|
|
'q': self.q,
|
|
'hash': self.hash,
|
|
'exclude_featured': self.exclude_featured
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x8a[p5',
|
|
struct.pack('<I', (0 if self.exclude_featured is None or self.exclude_featured is False else 1)),
|
|
self.serialize_bytes(self.q),
|
|
struct.pack('<q', self.hash),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_exclude_featured = bool(flags & 1)
|
|
_q = reader.tgread_string()
|
|
_hash = reader.read_long()
|
|
return cls(q=_q, hash=_hash, exclude_featured=_exclude_featured)
|
|
|
|
|
|
class SendBotRequestedPeerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x91b2d060
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, button_id: int, requested_peers: List['TypeInputPeer']):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.button_id = button_id
|
|
self.requested_peers = requested_peers
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
_tmp = []
|
|
for _x in self.requested_peers:
|
|
_tmp.append(utils.get_input_peer(await client.get_input_entity(_x)))
|
|
|
|
self.requested_peers = _tmp
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendBotRequestedPeerRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'button_id': self.button_id,
|
|
'requested_peers': [] if self.requested_peers is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.requested_peers]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'`\xd0\xb2\x91',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
struct.pack('<i', self.button_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.requested_peers)),b''.join(x._bytes() for x in self.requested_peers),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
_button_id = reader.read_int()
|
|
reader.read_int()
|
|
_requested_peers = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_requested_peers.append(_x)
|
|
|
|
return cls(peer=_peer, msg_id=_msg_id, button_id=_button_id, requested_peers=_requested_peers)
|
|
|
|
|
|
class SendEncryptedRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x44fa7a15
|
|
SUBCLASS_OF_ID = 0xc99e3e50
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', data: bytes, silent: Optional[bool]=None, random_id: int=None):
|
|
"""
|
|
:returns messages.SentEncryptedMessage: Instance of either SentEncryptedMessage, SentEncryptedFile.
|
|
"""
|
|
self.peer = peer
|
|
self.data = data
|
|
self.silent = silent
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendEncryptedRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'data': self.data,
|
|
'silent': self.silent,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x15z\xfaD',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 1)),
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
self.serialize_bytes(self.data),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
_data = reader.tgread_bytes()
|
|
return cls(peer=_peer, data=_data, silent=_silent, random_id=_random_id)
|
|
|
|
|
|
class SendEncryptedFileRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5559481d
|
|
SUBCLASS_OF_ID = 0xc99e3e50
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', data: bytes, file: 'TypeInputEncryptedFile', silent: Optional[bool]=None, random_id: int=None):
|
|
"""
|
|
:returns messages.SentEncryptedMessage: Instance of either SentEncryptedMessage, SentEncryptedFile.
|
|
"""
|
|
self.peer = peer
|
|
self.data = data
|
|
self.file = file
|
|
self.silent = silent
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendEncryptedFileRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'data': self.data,
|
|
'file': self.file.to_dict() if isinstance(self.file, TLObject) else self.file,
|
|
'silent': self.silent,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x1dHYU',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 1)),
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
self.serialize_bytes(self.data),
|
|
self.file._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
_data = reader.tgread_bytes()
|
|
_file = reader.tgread_object()
|
|
return cls(peer=_peer, data=_data, file=_file, silent=_silent, random_id=_random_id)
|
|
|
|
|
|
class SendEncryptedServiceRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x32d439a4
|
|
SUBCLASS_OF_ID = 0xc99e3e50
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', data: bytes, random_id: int=None):
|
|
"""
|
|
:returns messages.SentEncryptedMessage: Instance of either SentEncryptedMessage, SentEncryptedFile.
|
|
"""
|
|
self.peer = peer
|
|
self.data = data
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendEncryptedServiceRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'data': self.data,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa49\xd42',
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
self.serialize_bytes(self.data),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
_data = reader.tgread_bytes()
|
|
return cls(peer=_peer, data=_data, random_id=_random_id)
|
|
|
|
|
|
class SendInlineBotResultRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x3ebee86a
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', query_id: int, id: str, silent: Optional[bool]=None, background: Optional[bool]=None, clear_draft: Optional[bool]=None, hide_via: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, random_id: int=None, schedule_date: Optional[datetime]=None, send_as: Optional['TypeInputPeer']=None, quick_reply_shortcut: Optional['TypeInputQuickReplyShortcut']=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.query_id = query_id
|
|
self.id = id
|
|
self.silent = silent
|
|
self.background = background
|
|
self.clear_draft = clear_draft
|
|
self.hide_via = hide_via
|
|
self.reply_to = reply_to
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
self.schedule_date = schedule_date
|
|
self.send_as = send_as
|
|
self.quick_reply_shortcut = quick_reply_shortcut
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendInlineBotResultRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'query_id': self.query_id,
|
|
'id': self.id,
|
|
'silent': self.silent,
|
|
'background': self.background,
|
|
'clear_draft': self.clear_draft,
|
|
'hide_via': self.hide_via,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'random_id': self.random_id,
|
|
'schedule_date': self.schedule_date,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as,
|
|
'quick_reply_shortcut': self.quick_reply_shortcut.to_dict() if isinstance(self.quick_reply_shortcut, TLObject) else self.quick_reply_shortcut
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'j\xe8\xbe>',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 32) | (0 if self.background is None or self.background is False else 64) | (0 if self.clear_draft is None or self.clear_draft is False else 128) | (0 if self.hide_via is None or self.hide_via is False else 2048) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.schedule_date is None or self.schedule_date is False else 1024) | (0 if self.send_as is None or self.send_as is False else 8192) | (0 if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else 131072)),
|
|
self.peer._bytes(),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
struct.pack('<q', self.random_id),
|
|
struct.pack('<q', self.query_id),
|
|
self.serialize_bytes(self.id),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
b'' if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else (self.quick_reply_shortcut._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 32)
|
|
_background = bool(flags & 64)
|
|
_clear_draft = bool(flags & 128)
|
|
_hide_via = bool(flags & 2048)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
_random_id = reader.read_long()
|
|
_query_id = reader.read_long()
|
|
_id = reader.tgread_string()
|
|
if flags & 1024:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut = reader.tgread_object()
|
|
else:
|
|
_quick_reply_shortcut = None
|
|
return cls(peer=_peer, query_id=_query_id, id=_id, silent=_silent, background=_background, clear_draft=_clear_draft, hide_via=_hide_via, reply_to=_reply_to, random_id=_random_id, schedule_date=_schedule_date, send_as=_send_as, quick_reply_shortcut=_quick_reply_shortcut)
|
|
|
|
|
|
class SendMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x7852834e
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', media: 'TypeInputMedia', message: str, silent: Optional[bool]=None, background: Optional[bool]=None, clear_draft: Optional[bool]=None, noforwards: Optional[bool]=None, update_stickersets_order: Optional[bool]=None, invert_media: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, random_id: int=None, reply_markup: Optional['TypeReplyMarkup']=None, entities: Optional[List['TypeMessageEntity']]=None, schedule_date: Optional[datetime]=None, send_as: Optional['TypeInputPeer']=None, quick_reply_shortcut: Optional['TypeInputQuickReplyShortcut']=None, effect: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.media = media
|
|
self.message = message
|
|
self.silent = silent
|
|
self.background = background
|
|
self.clear_draft = clear_draft
|
|
self.noforwards = noforwards
|
|
self.update_stickersets_order = update_stickersets_order
|
|
self.invert_media = invert_media
|
|
self.reply_to = reply_to
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
self.reply_markup = reply_markup
|
|
self.entities = entities
|
|
self.schedule_date = schedule_date
|
|
self.send_as = send_as
|
|
self.quick_reply_shortcut = quick_reply_shortcut
|
|
self.effect = effect
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.media = utils.get_input_media(self.media)
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendMediaRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media,
|
|
'message': self.message,
|
|
'silent': self.silent,
|
|
'background': self.background,
|
|
'clear_draft': self.clear_draft,
|
|
'noforwards': self.noforwards,
|
|
'update_stickersets_order': self.update_stickersets_order,
|
|
'invert_media': self.invert_media,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'random_id': self.random_id,
|
|
'reply_markup': self.reply_markup.to_dict() if isinstance(self.reply_markup, TLObject) else self.reply_markup,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities],
|
|
'schedule_date': self.schedule_date,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as,
|
|
'quick_reply_shortcut': self.quick_reply_shortcut.to_dict() if isinstance(self.quick_reply_shortcut, TLObject) else self.quick_reply_shortcut,
|
|
'effect': self.effect
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'N\x83Rx',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 32) | (0 if self.background is None or self.background is False else 64) | (0 if self.clear_draft is None or self.clear_draft is False else 128) | (0 if self.noforwards is None or self.noforwards is False else 16384) | (0 if self.update_stickersets_order is None or self.update_stickersets_order is False else 32768) | (0 if self.invert_media is None or self.invert_media is False else 65536) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.reply_markup is None or self.reply_markup is False else 4) | (0 if self.entities is None or self.entities is False else 8) | (0 if self.schedule_date is None or self.schedule_date is False else 1024) | (0 if self.send_as is None or self.send_as is False else 8192) | (0 if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else 131072) | (0 if self.effect is None or self.effect is False else 262144)),
|
|
self.peer._bytes(),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
self.media._bytes(),
|
|
self.serialize_bytes(self.message),
|
|
struct.pack('<q', self.random_id),
|
|
b'' if self.reply_markup is None or self.reply_markup is False else (self.reply_markup._bytes()),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
b'' if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else (self.quick_reply_shortcut._bytes()),
|
|
b'' if self.effect is None or self.effect is False else (struct.pack('<q', self.effect)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 32)
|
|
_background = bool(flags & 64)
|
|
_clear_draft = bool(flags & 128)
|
|
_noforwards = bool(flags & 16384)
|
|
_update_stickersets_order = bool(flags & 32768)
|
|
_invert_media = bool(flags & 65536)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
_media = reader.tgread_object()
|
|
_message = reader.tgread_string()
|
|
_random_id = reader.read_long()
|
|
if flags & 4:
|
|
_reply_markup = reader.tgread_object()
|
|
else:
|
|
_reply_markup = None
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
if flags & 1024:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut = reader.tgread_object()
|
|
else:
|
|
_quick_reply_shortcut = None
|
|
if flags & 262144:
|
|
_effect = reader.read_long()
|
|
else:
|
|
_effect = None
|
|
return cls(peer=_peer, media=_media, message=_message, silent=_silent, background=_background, clear_draft=_clear_draft, noforwards=_noforwards, update_stickersets_order=_update_stickersets_order, invert_media=_invert_media, reply_to=_reply_to, random_id=_random_id, reply_markup=_reply_markup, entities=_entities, schedule_date=_schedule_date, send_as=_send_as, quick_reply_shortcut=_quick_reply_shortcut, effect=_effect)
|
|
|
|
|
|
class SendMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x983f9745
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', message: str, no_webpage: Optional[bool]=None, silent: Optional[bool]=None, background: Optional[bool]=None, clear_draft: Optional[bool]=None, noforwards: Optional[bool]=None, update_stickersets_order: Optional[bool]=None, invert_media: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, random_id: int=None, reply_markup: Optional['TypeReplyMarkup']=None, entities: Optional[List['TypeMessageEntity']]=None, schedule_date: Optional[datetime]=None, send_as: Optional['TypeInputPeer']=None, quick_reply_shortcut: Optional['TypeInputQuickReplyShortcut']=None, effect: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.message = message
|
|
self.no_webpage = no_webpage
|
|
self.silent = silent
|
|
self.background = background
|
|
self.clear_draft = clear_draft
|
|
self.noforwards = noforwards
|
|
self.update_stickersets_order = update_stickersets_order
|
|
self.invert_media = invert_media
|
|
self.reply_to = reply_to
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
self.reply_markup = reply_markup
|
|
self.entities = entities
|
|
self.schedule_date = schedule_date
|
|
self.send_as = send_as
|
|
self.quick_reply_shortcut = quick_reply_shortcut
|
|
self.effect = effect
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendMessageRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'message': self.message,
|
|
'no_webpage': self.no_webpage,
|
|
'silent': self.silent,
|
|
'background': self.background,
|
|
'clear_draft': self.clear_draft,
|
|
'noforwards': self.noforwards,
|
|
'update_stickersets_order': self.update_stickersets_order,
|
|
'invert_media': self.invert_media,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'random_id': self.random_id,
|
|
'reply_markup': self.reply_markup.to_dict() if isinstance(self.reply_markup, TLObject) else self.reply_markup,
|
|
'entities': [] if self.entities is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.entities],
|
|
'schedule_date': self.schedule_date,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as,
|
|
'quick_reply_shortcut': self.quick_reply_shortcut.to_dict() if isinstance(self.quick_reply_shortcut, TLObject) else self.quick_reply_shortcut,
|
|
'effect': self.effect
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'E\x97?\x98',
|
|
struct.pack('<I', (0 if self.no_webpage is None or self.no_webpage is False else 2) | (0 if self.silent is None or self.silent is False else 32) | (0 if self.background is None or self.background is False else 64) | (0 if self.clear_draft is None or self.clear_draft is False else 128) | (0 if self.noforwards is None or self.noforwards is False else 16384) | (0 if self.update_stickersets_order is None or self.update_stickersets_order is False else 32768) | (0 if self.invert_media is None or self.invert_media is False else 65536) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.reply_markup is None or self.reply_markup is False else 4) | (0 if self.entities is None or self.entities is False else 8) | (0 if self.schedule_date is None or self.schedule_date is False else 1024) | (0 if self.send_as is None or self.send_as is False else 8192) | (0 if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else 131072) | (0 if self.effect is None or self.effect is False else 262144)),
|
|
self.peer._bytes(),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
self.serialize_bytes(self.message),
|
|
struct.pack('<q', self.random_id),
|
|
b'' if self.reply_markup is None or self.reply_markup is False else (self.reply_markup._bytes()),
|
|
b'' if self.entities is None or self.entities is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.entities)),b''.join(x._bytes() for x in self.entities))),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
b'' if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else (self.quick_reply_shortcut._bytes()),
|
|
b'' if self.effect is None or self.effect is False else (struct.pack('<q', self.effect)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_no_webpage = bool(flags & 2)
|
|
_silent = bool(flags & 32)
|
|
_background = bool(flags & 64)
|
|
_clear_draft = bool(flags & 128)
|
|
_noforwards = bool(flags & 16384)
|
|
_update_stickersets_order = bool(flags & 32768)
|
|
_invert_media = bool(flags & 65536)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
_message = reader.tgread_string()
|
|
_random_id = reader.read_long()
|
|
if flags & 4:
|
|
_reply_markup = reader.tgread_object()
|
|
else:
|
|
_reply_markup = None
|
|
if flags & 8:
|
|
reader.read_int()
|
|
_entities = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_entities.append(_x)
|
|
|
|
else:
|
|
_entities = None
|
|
if flags & 1024:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut = reader.tgread_object()
|
|
else:
|
|
_quick_reply_shortcut = None
|
|
if flags & 262144:
|
|
_effect = reader.read_long()
|
|
else:
|
|
_effect = None
|
|
return cls(peer=_peer, message=_message, no_webpage=_no_webpage, silent=_silent, background=_background, clear_draft=_clear_draft, noforwards=_noforwards, update_stickersets_order=_update_stickersets_order, invert_media=_invert_media, reply_to=_reply_to, random_id=_random_id, reply_markup=_reply_markup, entities=_entities, schedule_date=_schedule_date, send_as=_send_as, quick_reply_shortcut=_quick_reply_shortcut, effect=_effect)
|
|
|
|
|
|
class SendMultiMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x37b74355
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', multi_media: List['TypeInputSingleMedia'], silent: Optional[bool]=None, background: Optional[bool]=None, clear_draft: Optional[bool]=None, noforwards: Optional[bool]=None, update_stickersets_order: Optional[bool]=None, invert_media: Optional[bool]=None, reply_to: Optional['TypeInputReplyTo']=None, schedule_date: Optional[datetime]=None, send_as: Optional['TypeInputPeer']=None, quick_reply_shortcut: Optional['TypeInputQuickReplyShortcut']=None, effect: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.multi_media = multi_media
|
|
self.silent = silent
|
|
self.background = background
|
|
self.clear_draft = clear_draft
|
|
self.noforwards = noforwards
|
|
self.update_stickersets_order = update_stickersets_order
|
|
self.invert_media = invert_media
|
|
self.reply_to = reply_to
|
|
self.schedule_date = schedule_date
|
|
self.send_as = send_as
|
|
self.quick_reply_shortcut = quick_reply_shortcut
|
|
self.effect = effect
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
if self.send_as:
|
|
self.send_as = utils.get_input_peer(await client.get_input_entity(self.send_as))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendMultiMediaRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'multi_media': [] if self.multi_media is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.multi_media],
|
|
'silent': self.silent,
|
|
'background': self.background,
|
|
'clear_draft': self.clear_draft,
|
|
'noforwards': self.noforwards,
|
|
'update_stickersets_order': self.update_stickersets_order,
|
|
'invert_media': self.invert_media,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'schedule_date': self.schedule_date,
|
|
'send_as': self.send_as.to_dict() if isinstance(self.send_as, TLObject) else self.send_as,
|
|
'quick_reply_shortcut': self.quick_reply_shortcut.to_dict() if isinstance(self.quick_reply_shortcut, TLObject) else self.quick_reply_shortcut,
|
|
'effect': self.effect
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'UC\xb77',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 32) | (0 if self.background is None or self.background is False else 64) | (0 if self.clear_draft is None or self.clear_draft is False else 128) | (0 if self.noforwards is None or self.noforwards is False else 16384) | (0 if self.update_stickersets_order is None or self.update_stickersets_order is False else 32768) | (0 if self.invert_media is None or self.invert_media is False else 65536) | (0 if self.reply_to is None or self.reply_to is False else 1) | (0 if self.schedule_date is None or self.schedule_date is False else 1024) | (0 if self.send_as is None or self.send_as is False else 8192) | (0 if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else 131072) | (0 if self.effect is None or self.effect is False else 262144)),
|
|
self.peer._bytes(),
|
|
b'' if self.reply_to is None or self.reply_to is False else (self.reply_to._bytes()),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.multi_media)),b''.join(x._bytes() for x in self.multi_media),
|
|
b'' if self.schedule_date is None or self.schedule_date is False else (self.serialize_datetime(self.schedule_date)),
|
|
b'' if self.send_as is None or self.send_as is False else (self.send_as._bytes()),
|
|
b'' if self.quick_reply_shortcut is None or self.quick_reply_shortcut is False else (self.quick_reply_shortcut._bytes()),
|
|
b'' if self.effect is None or self.effect is False else (struct.pack('<q', self.effect)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 32)
|
|
_background = bool(flags & 64)
|
|
_clear_draft = bool(flags & 128)
|
|
_noforwards = bool(flags & 16384)
|
|
_update_stickersets_order = bool(flags & 32768)
|
|
_invert_media = bool(flags & 65536)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_reply_to = reader.tgread_object()
|
|
else:
|
|
_reply_to = None
|
|
reader.read_int()
|
|
_multi_media = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_multi_media.append(_x)
|
|
|
|
if flags & 1024:
|
|
_schedule_date = reader.tgread_date()
|
|
else:
|
|
_schedule_date = None
|
|
if flags & 8192:
|
|
_send_as = reader.tgread_object()
|
|
else:
|
|
_send_as = None
|
|
if flags & 131072:
|
|
_quick_reply_shortcut = reader.tgread_object()
|
|
else:
|
|
_quick_reply_shortcut = None
|
|
if flags & 262144:
|
|
_effect = reader.read_long()
|
|
else:
|
|
_effect = None
|
|
return cls(peer=_peer, multi_media=_multi_media, silent=_silent, background=_background, clear_draft=_clear_draft, noforwards=_noforwards, update_stickersets_order=_update_stickersets_order, invert_media=_invert_media, reply_to=_reply_to, schedule_date=_schedule_date, send_as=_send_as, quick_reply_shortcut=_quick_reply_shortcut, effect=_effect)
|
|
|
|
|
|
class SendQuickReplyMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x6c750de1
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', shortcut_id: int, id: List[int], random_id: List[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.shortcut_id = shortcut_id
|
|
self.id = id
|
|
self.random_id = random_id if random_id is not None else [int.from_bytes(os.urandom(8), 'big', signed=True) for _ in range(len(id))]
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendQuickReplyMessagesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'shortcut_id': self.shortcut_id,
|
|
'id': [] if self.id is None else self.id[:],
|
|
'random_id': [] if self.random_id is None else self.random_id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe1\rul',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.shortcut_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.random_id)),b''.join(struct.pack('<q', x) for x in self.random_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_shortcut_id = reader.read_int()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
reader.read_int()
|
|
_random_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_long()
|
|
_random_id.append(_x)
|
|
|
|
return cls(peer=_peer, shortcut_id=_shortcut_id, id=_id, random_id=_random_id)
|
|
|
|
|
|
class SendReactionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd30d78d4
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, big: Optional[bool]=None, add_to_recent: Optional[bool]=None, reaction: Optional[List['TypeReaction']]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.big = big
|
|
self.add_to_recent = add_to_recent
|
|
self.reaction = reaction
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendReactionRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'big': self.big,
|
|
'add_to_recent': self.add_to_recent,
|
|
'reaction': [] if self.reaction is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.reaction]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd4x\r\xd3',
|
|
struct.pack('<I', (0 if self.big is None or self.big is False else 2) | (0 if self.add_to_recent is None or self.add_to_recent is False else 4) | (0 if self.reaction is None or self.reaction is False else 1)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
b'' if self.reaction is None or self.reaction is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.reaction)),b''.join(x._bytes() for x in self.reaction))),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_big = bool(flags & 2)
|
|
_add_to_recent = bool(flags & 4)
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
if flags & 1:
|
|
reader.read_int()
|
|
_reaction = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_reaction.append(_x)
|
|
|
|
else:
|
|
_reaction = None
|
|
return cls(peer=_peer, msg_id=_msg_id, big=_big, add_to_recent=_add_to_recent, reaction=_reaction)
|
|
|
|
|
|
class SendScheduledMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbd38850a
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: List[int]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendScheduledMessagesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\n\x858\xbd',
|
|
self.peer._bytes(),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
return cls(peer=_peer, id=_id)
|
|
|
|
|
|
class SendScreenshotNotificationRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa1405817
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', reply_to: 'TypeInputReplyTo', random_id: int=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.reply_to = reply_to
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendScreenshotNotificationRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'reply_to': self.reply_to.to_dict() if isinstance(self.reply_to, TLObject) else self.reply_to,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x17X@\xa1',
|
|
self.peer._bytes(),
|
|
self.reply_to._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_reply_to = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
return cls(peer=_peer, reply_to=_reply_to, random_id=_random_id)
|
|
|
|
|
|
class SendVoteRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x10ea6184
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int, options: List[bytes]):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
self.options = options
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendVoteRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id,
|
|
'options': [] if self.options is None else self.options[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x84a\xea\x10',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.options)),b''.join(self.serialize_bytes(x) for x in self.options),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
reader.read_int()
|
|
_options = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_bytes()
|
|
_options.append(_x)
|
|
|
|
return cls(peer=_peer, msg_id=_msg_id, options=_options)
|
|
|
|
|
|
class SendWebViewDataRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xdc0242c8
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, bot: 'TypeInputUser', button_text: str, data: str, random_id: int=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.bot = bot
|
|
self.button_text = button_text
|
|
self.data = data
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendWebViewDataRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'button_text': self.button_text,
|
|
'data': self.data,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc8B\x02\xdc',
|
|
self.bot._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
self.serialize_bytes(self.button_text),
|
|
self.serialize_bytes(self.data),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_bot = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
_button_text = reader.tgread_string()
|
|
_data = reader.tgread_string()
|
|
return cls(bot=_bot, button_text=_button_text, data=_data, random_id=_random_id)
|
|
|
|
|
|
class SendWebViewResultMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa4314f5
|
|
SUBCLASS_OF_ID = 0x75e49312
|
|
|
|
def __init__(self, bot_query_id: str, result: 'TypeInputBotInlineResult'):
|
|
"""
|
|
:returns WebViewMessageSent: Instance of WebViewMessageSent.
|
|
"""
|
|
self.bot_query_id = bot_query_id
|
|
self.result = result
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SendWebViewResultMessageRequest',
|
|
'bot_query_id': self.bot_query_id,
|
|
'result': self.result.to_dict() if isinstance(self.result, TLObject) else self.result
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xf5\x14C\n',
|
|
self.serialize_bytes(self.bot_query_id),
|
|
self.result._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_bot_query_id = reader.tgread_string()
|
|
_result = reader.tgread_object()
|
|
return cls(bot_query_id=_bot_query_id, result=_result)
|
|
|
|
|
|
class SetBotCallbackAnswerRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd58f130a
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, query_id: int, cache_time: int, alert: Optional[bool]=None, message: Optional[str]=None, url: Optional[str]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.query_id = query_id
|
|
self.cache_time = cache_time
|
|
self.alert = alert
|
|
self.message = message
|
|
self.url = url
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetBotCallbackAnswerRequest',
|
|
'query_id': self.query_id,
|
|
'cache_time': self.cache_time,
|
|
'alert': self.alert,
|
|
'message': self.message,
|
|
'url': self.url
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\n\x13\x8f\xd5',
|
|
struct.pack('<I', (0 if self.alert is None or self.alert is False else 2) | (0 if self.message is None or self.message is False else 1) | (0 if self.url is None or self.url is False else 4)),
|
|
struct.pack('<q', self.query_id),
|
|
b'' if self.message is None or self.message is False else (self.serialize_bytes(self.message)),
|
|
b'' if self.url is None or self.url is False else (self.serialize_bytes(self.url)),
|
|
struct.pack('<i', self.cache_time),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_alert = bool(flags & 2)
|
|
_query_id = reader.read_long()
|
|
if flags & 1:
|
|
_message = reader.tgread_string()
|
|
else:
|
|
_message = None
|
|
if flags & 4:
|
|
_url = reader.tgread_string()
|
|
else:
|
|
_url = None
|
|
_cache_time = reader.read_int()
|
|
return cls(query_id=_query_id, cache_time=_cache_time, alert=_alert, message=_message, url=_url)
|
|
|
|
|
|
class SetBotPrecheckoutResultsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9c2dd95
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, query_id: int, success: Optional[bool]=None, error: Optional[str]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.query_id = query_id
|
|
self.success = success
|
|
self.error = error
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetBotPrecheckoutResultsRequest',
|
|
'query_id': self.query_id,
|
|
'success': self.success,
|
|
'error': self.error
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x95\xdd\xc2\t',
|
|
struct.pack('<I', (0 if self.success is None or self.success is False else 2) | (0 if self.error is None or self.error is False else 1)),
|
|
struct.pack('<q', self.query_id),
|
|
b'' if self.error is None or self.error is False else (self.serialize_bytes(self.error)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_success = bool(flags & 2)
|
|
_query_id = reader.read_long()
|
|
if flags & 1:
|
|
_error = reader.tgread_string()
|
|
else:
|
|
_error = None
|
|
return cls(query_id=_query_id, success=_success, error=_error)
|
|
|
|
|
|
class SetBotShippingResultsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe5f672fa
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, query_id: int, error: Optional[str]=None, shipping_options: Optional[List['TypeShippingOption']]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.query_id = query_id
|
|
self.error = error
|
|
self.shipping_options = shipping_options
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetBotShippingResultsRequest',
|
|
'query_id': self.query_id,
|
|
'error': self.error,
|
|
'shipping_options': [] if self.shipping_options is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.shipping_options]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xfar\xf6\xe5',
|
|
struct.pack('<I', (0 if self.error is None or self.error is False else 1) | (0 if self.shipping_options is None or self.shipping_options is False else 2)),
|
|
struct.pack('<q', self.query_id),
|
|
b'' if self.error is None or self.error is False else (self.serialize_bytes(self.error)),
|
|
b'' if self.shipping_options is None or self.shipping_options is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.shipping_options)),b''.join(x._bytes() for x in self.shipping_options))),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_query_id = reader.read_long()
|
|
if flags & 1:
|
|
_error = reader.tgread_string()
|
|
else:
|
|
_error = None
|
|
if flags & 2:
|
|
reader.read_int()
|
|
_shipping_options = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_shipping_options.append(_x)
|
|
|
|
else:
|
|
_shipping_options = None
|
|
return cls(query_id=_query_id, error=_error, shipping_options=_shipping_options)
|
|
|
|
|
|
class SetChatAvailableReactionsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5a150bd4
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', available_reactions: 'TypeChatReactions', reactions_limit: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.available_reactions = available_reactions
|
|
self.reactions_limit = reactions_limit
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetChatAvailableReactionsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'available_reactions': self.available_reactions.to_dict() if isinstance(self.available_reactions, TLObject) else self.available_reactions,
|
|
'reactions_limit': self.reactions_limit
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xd4\x0b\x15Z',
|
|
struct.pack('<I', (0 if self.reactions_limit is None or self.reactions_limit is False else 1)),
|
|
self.peer._bytes(),
|
|
self.available_reactions._bytes(),
|
|
b'' if self.reactions_limit is None or self.reactions_limit is False else (struct.pack('<i', self.reactions_limit)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
_available_reactions = reader.tgread_object()
|
|
if flags & 1:
|
|
_reactions_limit = reader.read_int()
|
|
else:
|
|
_reactions_limit = None
|
|
return cls(peer=_peer, available_reactions=_available_reactions, reactions_limit=_reactions_limit)
|
|
|
|
|
|
class SetChatThemeRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe63be13f
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', emoticon: str):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.emoticon = emoticon
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetChatThemeRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'emoticon': self.emoticon
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'?\xe1;\xe6',
|
|
self.peer._bytes(),
|
|
self.serialize_bytes(self.emoticon),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_emoticon = reader.tgread_string()
|
|
return cls(peer=_peer, emoticon=_emoticon)
|
|
|
|
|
|
class SetChatWallPaperRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8ffacae1
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', for_both: Optional[bool]=None, revert: Optional[bool]=None, wallpaper: Optional['TypeInputWallPaper']=None, settings: Optional['TypeWallPaperSettings']=None, id: Optional[int]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.for_both = for_both
|
|
self.revert = revert
|
|
self.wallpaper = wallpaper
|
|
self.settings = settings
|
|
self.id = id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetChatWallPaperRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'for_both': self.for_both,
|
|
'revert': self.revert,
|
|
'wallpaper': self.wallpaper.to_dict() if isinstance(self.wallpaper, TLObject) else self.wallpaper,
|
|
'settings': self.settings.to_dict() if isinstance(self.settings, TLObject) else self.settings,
|
|
'id': self.id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe1\xca\xfa\x8f',
|
|
struct.pack('<I', (0 if self.for_both is None or self.for_both is False else 8) | (0 if self.revert is None or self.revert is False else 16) | (0 if self.wallpaper is None or self.wallpaper is False else 1) | (0 if self.settings is None or self.settings is False else 4) | (0 if self.id is None or self.id is False else 2)),
|
|
self.peer._bytes(),
|
|
b'' if self.wallpaper is None or self.wallpaper is False else (self.wallpaper._bytes()),
|
|
b'' if self.settings is None or self.settings is False else (self.settings._bytes()),
|
|
b'' if self.id is None or self.id is False else (struct.pack('<i', self.id)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_for_both = bool(flags & 8)
|
|
_revert = bool(flags & 16)
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_wallpaper = reader.tgread_object()
|
|
else:
|
|
_wallpaper = None
|
|
if flags & 4:
|
|
_settings = reader.tgread_object()
|
|
else:
|
|
_settings = None
|
|
if flags & 2:
|
|
_id = reader.read_int()
|
|
else:
|
|
_id = None
|
|
return cls(peer=_peer, for_both=_for_both, revert=_revert, wallpaper=_wallpaper, settings=_settings, id=_id)
|
|
|
|
|
|
class SetDefaultHistoryTTLRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x9eb51445
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, period: int):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.period = period
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetDefaultHistoryTTLRequest',
|
|
'period': self.period
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'E\x14\xb5\x9e',
|
|
struct.pack('<i', self.period),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_period = reader.read_int()
|
|
return cls(period=_period)
|
|
|
|
|
|
class SetDefaultReactionRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x4f47a016
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, reaction: 'TypeReaction'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.reaction = reaction
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetDefaultReactionRequest',
|
|
'reaction': self.reaction.to_dict() if isinstance(self.reaction, TLObject) else self.reaction
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x16\xa0GO',
|
|
self.reaction._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_reaction = reader.tgread_object()
|
|
return cls(reaction=_reaction)
|
|
|
|
|
|
class SetEncryptedTypingRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x791451ed
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', typing: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.typing = typing
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetEncryptedTypingRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'typing': self.typing
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xedQ\x14y',
|
|
self.peer._bytes(),
|
|
b'\xb5ur\x99' if self.typing else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_typing = reader.tgread_bool()
|
|
return cls(peer=_peer, typing=_typing)
|
|
|
|
|
|
class SetGameScoreRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x8ef8ecc0
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, user_id: 'TypeInputUser', score: int, edit_message: Optional[bool]=None, force: Optional[bool]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.user_id = user_id
|
|
self.score = score
|
|
self.edit_message = edit_message
|
|
self.force = force
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetGameScoreRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'score': self.score,
|
|
'edit_message': self.edit_message,
|
|
'force': self.force
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xc0\xec\xf8\x8e',
|
|
struct.pack('<I', (0 if self.edit_message is None or self.edit_message is False else 1) | (0 if self.force is None or self.force is False else 2)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
self.user_id._bytes(),
|
|
struct.pack('<i', self.score),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_edit_message = bool(flags & 1)
|
|
_force = bool(flags & 2)
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
_user_id = reader.tgread_object()
|
|
_score = reader.read_int()
|
|
return cls(peer=_peer, id=_id, user_id=_user_id, score=_score, edit_message=_edit_message, force=_force)
|
|
|
|
|
|
class SetHistoryTTLRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb80e5fe4
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', period: int):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.period = period
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetHistoryTTLRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'period': self.period
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe4_\x0e\xb8',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.period),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_period = reader.read_int()
|
|
return cls(peer=_peer, period=_period)
|
|
|
|
|
|
class SetInlineBotResultsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xbb12a419
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, query_id: int, results: List['TypeInputBotInlineResult'], cache_time: int, gallery: Optional[bool]=None, private: Optional[bool]=None, next_offset: Optional[str]=None, switch_pm: Optional['TypeInlineBotSwitchPM']=None, switch_webview: Optional['TypeInlineBotWebView']=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.query_id = query_id
|
|
self.results = results
|
|
self.cache_time = cache_time
|
|
self.gallery = gallery
|
|
self.private = private
|
|
self.next_offset = next_offset
|
|
self.switch_pm = switch_pm
|
|
self.switch_webview = switch_webview
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetInlineBotResultsRequest',
|
|
'query_id': self.query_id,
|
|
'results': [] if self.results is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.results],
|
|
'cache_time': self.cache_time,
|
|
'gallery': self.gallery,
|
|
'private': self.private,
|
|
'next_offset': self.next_offset,
|
|
'switch_pm': self.switch_pm.to_dict() if isinstance(self.switch_pm, TLObject) else self.switch_pm,
|
|
'switch_webview': self.switch_webview.to_dict() if isinstance(self.switch_webview, TLObject) else self.switch_webview
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x19\xa4\x12\xbb',
|
|
struct.pack('<I', (0 if self.gallery is None or self.gallery is False else 1) | (0 if self.private is None or self.private is False else 2) | (0 if self.next_offset is None or self.next_offset is False else 4) | (0 if self.switch_pm is None or self.switch_pm is False else 8) | (0 if self.switch_webview is None or self.switch_webview is False else 16)),
|
|
struct.pack('<q', self.query_id),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.results)),b''.join(x._bytes() for x in self.results),
|
|
struct.pack('<i', self.cache_time),
|
|
b'' if self.next_offset is None or self.next_offset is False else (self.serialize_bytes(self.next_offset)),
|
|
b'' if self.switch_pm is None or self.switch_pm is False else (self.switch_pm._bytes()),
|
|
b'' if self.switch_webview is None or self.switch_webview is False else (self.switch_webview._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_gallery = bool(flags & 1)
|
|
_private = bool(flags & 2)
|
|
_query_id = reader.read_long()
|
|
reader.read_int()
|
|
_results = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_results.append(_x)
|
|
|
|
_cache_time = reader.read_int()
|
|
if flags & 4:
|
|
_next_offset = reader.tgread_string()
|
|
else:
|
|
_next_offset = None
|
|
if flags & 8:
|
|
_switch_pm = reader.tgread_object()
|
|
else:
|
|
_switch_pm = None
|
|
if flags & 16:
|
|
_switch_webview = reader.tgread_object()
|
|
else:
|
|
_switch_webview = None
|
|
return cls(query_id=_query_id, results=_results, cache_time=_cache_time, gallery=_gallery, private=_private, next_offset=_next_offset, switch_pm=_switch_pm, switch_webview=_switch_webview)
|
|
|
|
|
|
class SetInlineGameScoreRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x15ad9f64
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: 'TypeInputBotInlineMessageID', user_id: 'TypeInputUser', score: int, edit_message: Optional[bool]=None, force: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.user_id = user_id
|
|
self.score = score
|
|
self.edit_message = edit_message
|
|
self.force = force
|
|
|
|
async def resolve(self, client, utils):
|
|
self.user_id = utils.get_input_user(await client.get_input_entity(self.user_id))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetInlineGameScoreRequest',
|
|
'id': self.id.to_dict() if isinstance(self.id, TLObject) else self.id,
|
|
'user_id': self.user_id.to_dict() if isinstance(self.user_id, TLObject) else self.user_id,
|
|
'score': self.score,
|
|
'edit_message': self.edit_message,
|
|
'force': self.force
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'd\x9f\xad\x15',
|
|
struct.pack('<I', (0 if self.edit_message is None or self.edit_message is False else 1) | (0 if self.force is None or self.force is False else 2)),
|
|
self.id._bytes(),
|
|
self.user_id._bytes(),
|
|
struct.pack('<i', self.score),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_edit_message = bool(flags & 1)
|
|
_force = bool(flags & 2)
|
|
_id = reader.tgread_object()
|
|
_user_id = reader.tgread_object()
|
|
_score = reader.read_int()
|
|
return cls(id=_id, user_id=_user_id, score=_score, edit_message=_edit_message, force=_force)
|
|
|
|
|
|
class SetTypingRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x58943ee2
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', action: 'TypeSendMessageAction', top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.action = action
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'SetTypingRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'action': self.action.to_dict() if isinstance(self.action, TLObject) else self.action,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe2>\x94X',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
self.action._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
_action = reader.tgread_object()
|
|
return cls(peer=_peer, action=_action, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class StartBotRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe6df7378
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, bot: 'TypeInputUser', peer: 'TypeInputPeer', start_param: str, random_id: int=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.bot = bot
|
|
self.peer = peer
|
|
self.start_param = start_param
|
|
self.random_id = random_id if random_id is not None else int.from_bytes(os.urandom(8), 'big', signed=True)
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'StartBotRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'start_param': self.start_param,
|
|
'random_id': self.random_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'xs\xdf\xe6',
|
|
self.bot._bytes(),
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.random_id),
|
|
self.serialize_bytes(self.start_param),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_bot = reader.tgread_object()
|
|
_peer = reader.tgread_object()
|
|
_random_id = reader.read_long()
|
|
_start_param = reader.tgread_string()
|
|
return cls(bot=_bot, peer=_peer, start_param=_start_param, random_id=_random_id)
|
|
|
|
|
|
class StartHistoryImportRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb43df344
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', import_id: int):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.import_id = import_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'StartHistoryImportRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'import_id': self.import_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'D\xf3=\xb4',
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.import_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_import_id = reader.read_long()
|
|
return cls(peer=_peer, import_id=_import_id)
|
|
|
|
|
|
class ToggleBotInAttachMenuRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x69f59d69
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, bot: 'TypeInputUser', enabled: bool, write_allowed: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.bot = bot
|
|
self.enabled = enabled
|
|
self.write_allowed = write_allowed
|
|
|
|
async def resolve(self, client, utils):
|
|
self.bot = utils.get_input_user(await client.get_input_entity(self.bot))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleBotInAttachMenuRequest',
|
|
'bot': self.bot.to_dict() if isinstance(self.bot, TLObject) else self.bot,
|
|
'enabled': self.enabled,
|
|
'write_allowed': self.write_allowed
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'i\x9d\xf5i',
|
|
struct.pack('<I', (0 if self.write_allowed is None or self.write_allowed is False else 1)),
|
|
self.bot._bytes(),
|
|
b'\xb5ur\x99' if self.enabled else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_write_allowed = bool(flags & 1)
|
|
_bot = reader.tgread_object()
|
|
_enabled = reader.tgread_bool()
|
|
return cls(bot=_bot, enabled=_enabled, write_allowed=_write_allowed)
|
|
|
|
|
|
class ToggleDialogFilterTagsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xfd2dda49
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, enabled: bool):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.enabled = enabled
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleDialogFilterTagsRequest',
|
|
'enabled': self.enabled
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'I\xda-\xfd',
|
|
b'\xb5ur\x99' if self.enabled else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_enabled = reader.tgread_bool()
|
|
return cls(enabled=_enabled)
|
|
|
|
|
|
class ToggleDialogPinRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xa731e257
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputDialogPeer', pinned: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.pinned = pinned
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = await client._get_input_dialog(self.peer)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleDialogPinRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'pinned': self.pinned
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'W\xe21\xa7',
|
|
struct.pack('<I', (0 if self.pinned is None or self.pinned is False else 1)),
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_pinned = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer, pinned=_pinned)
|
|
|
|
|
|
class ToggleNoForwardsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb11eafa2
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', enabled: bool):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.enabled = enabled
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleNoForwardsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'enabled': self.enabled
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa2\xaf\x1e\xb1',
|
|
self.peer._bytes(),
|
|
b'\xb5ur\x99' if self.enabled else b'7\x97y\xbc',
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_enabled = reader.tgread_bool()
|
|
return cls(peer=_peer, enabled=_enabled)
|
|
|
|
|
|
class TogglePeerTranslationsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xe47cb579
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', disabled: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.disabled = disabled
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'TogglePeerTranslationsRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'disabled': self.disabled
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'y\xb5|\xe4',
|
|
struct.pack('<I', (0 if self.disabled is None or self.disabled is False else 1)),
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_disabled = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer, disabled=_disabled)
|
|
|
|
|
|
class ToggleSavedDialogPinRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xac81bbde
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, peer: 'TypeInputDialogPeer', pinned: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.peer = peer
|
|
self.pinned = pinned
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = await client._get_input_dialog(self.peer)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleSavedDialogPinRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'pinned': self.pinned
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xde\xbb\x81\xac',
|
|
struct.pack('<I', (0 if self.pinned is None or self.pinned is False else 1)),
|
|
self.peer._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_pinned = bool(flags & 1)
|
|
_peer = reader.tgread_object()
|
|
return cls(peer=_peer, pinned=_pinned)
|
|
|
|
|
|
class ToggleStickerSetsRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xb5052fea
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, stickersets: List['TypeInputStickerSet'], uninstall: Optional[bool]=None, archive: Optional[bool]=None, unarchive: Optional[bool]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.stickersets = stickersets
|
|
self.uninstall = uninstall
|
|
self.archive = archive
|
|
self.unarchive = unarchive
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'ToggleStickerSetsRequest',
|
|
'stickersets': [] if self.stickersets is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.stickersets],
|
|
'uninstall': self.uninstall,
|
|
'archive': self.archive,
|
|
'unarchive': self.unarchive
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xea/\x05\xb5',
|
|
struct.pack('<I', (0 if self.uninstall is None or self.uninstall is False else 1) | (0 if self.archive is None or self.archive is False else 2) | (0 if self.unarchive is None or self.unarchive is False else 4)),
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.stickersets)),b''.join(x._bytes() for x in self.stickersets),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_uninstall = bool(flags & 1)
|
|
_archive = bool(flags & 2)
|
|
_unarchive = bool(flags & 4)
|
|
reader.read_int()
|
|
_stickersets = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_stickersets.append(_x)
|
|
|
|
return cls(stickersets=_stickersets, uninstall=_uninstall, archive=_archive, unarchive=_unarchive)
|
|
|
|
|
|
class TranscribeAudioRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x269e9a49
|
|
SUBCLASS_OF_ID = 0x21b24936
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', msg_id: int):
|
|
"""
|
|
:returns messages.TranscribedAudio: Instance of TranscribedAudio.
|
|
"""
|
|
self.peer = peer
|
|
self.msg_id = msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'TranscribeAudioRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'msg_id': self.msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'I\x9a\x9e&',
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.msg_id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_msg_id = reader.read_int()
|
|
return cls(peer=_peer, msg_id=_msg_id)
|
|
|
|
|
|
class TranslateTextRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x63183030
|
|
SUBCLASS_OF_ID = 0x24243e8
|
|
|
|
def __init__(self, to_lang: str, peer: Optional['TypeInputPeer']=None, id: Optional[List[int]]=None, text: Optional[List['TypeTextWithEntities']]=None):
|
|
"""
|
|
:returns messages.TranslatedText: Instance of TranslateResult.
|
|
"""
|
|
self.to_lang = to_lang
|
|
self.peer = peer
|
|
self.id = id
|
|
self.text = text
|
|
|
|
async def resolve(self, client, utils):
|
|
if self.peer:
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'TranslateTextRequest',
|
|
'to_lang': self.to_lang,
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': [] if self.id is None else self.id[:],
|
|
'text': [] if self.text is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.text]
|
|
}
|
|
|
|
def _bytes(self):
|
|
assert ((self.peer or self.peer is not None) and (self.id or self.id is not None)) or ((self.peer is None or self.peer is False) and (self.id is None or self.id is False)), 'peer, id parameters must all be False-y (like None) or all me True-y'
|
|
return b''.join((
|
|
b'00\x18c',
|
|
struct.pack('<I', (0 if self.peer is None or self.peer is False else 1) | (0 if self.id is None or self.id is False else 1) | (0 if self.text is None or self.text is False else 2)),
|
|
b'' if self.peer is None or self.peer is False else (self.peer._bytes()),
|
|
b'' if self.id is None or self.id is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.id)),b''.join(struct.pack('<i', x) for x in self.id))),
|
|
b'' if self.text is None or self.text is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.text)),b''.join(x._bytes() for x in self.text))),
|
|
self.serialize_bytes(self.to_lang),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
if flags & 1:
|
|
_peer = reader.tgread_object()
|
|
else:
|
|
_peer = None
|
|
if flags & 1:
|
|
reader.read_int()
|
|
_id = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_id.append(_x)
|
|
|
|
else:
|
|
_id = None
|
|
if flags & 2:
|
|
reader.read_int()
|
|
_text = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.tgread_object()
|
|
_text.append(_x)
|
|
|
|
else:
|
|
_text = None
|
|
_to_lang = reader.tgread_string()
|
|
return cls(to_lang=_to_lang, peer=_peer, id=_id, text=_text)
|
|
|
|
|
|
class UninstallStickerSetRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xf96e55de
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, stickerset: 'TypeInputStickerSet'):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.stickerset = stickerset
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UninstallStickerSetRequest',
|
|
'stickerset': self.stickerset.to_dict() if isinstance(self.stickerset, TLObject) else self.stickerset
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xdeUn\xf9',
|
|
self.stickerset._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_stickerset = reader.tgread_object()
|
|
return cls(stickerset=_stickerset)
|
|
|
|
|
|
class UnpinAllMessagesRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xee22b9a8
|
|
SUBCLASS_OF_ID = 0x2c49c116
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', top_msg_id: Optional[int]=None):
|
|
"""
|
|
:returns messages.AffectedHistory: Instance of AffectedHistory.
|
|
"""
|
|
self.peer = peer
|
|
self.top_msg_id = top_msg_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UnpinAllMessagesRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'top_msg_id': self.top_msg_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xa8\xb9"\xee',
|
|
struct.pack('<I', (0 if self.top_msg_id is None or self.top_msg_id is False else 1)),
|
|
self.peer._bytes(),
|
|
b'' if self.top_msg_id is None or self.top_msg_id is False else (struct.pack('<i', self.top_msg_id)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_peer = reader.tgread_object()
|
|
if flags & 1:
|
|
_top_msg_id = reader.read_int()
|
|
else:
|
|
_top_msg_id = None
|
|
return cls(peer=_peer, top_msg_id=_top_msg_id)
|
|
|
|
|
|
class UpdateDialogFilterRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x1ad4a04a
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, id: int, filter: Optional['TypeDialogFilter']=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.id = id
|
|
self.filter = filter
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UpdateDialogFilterRequest',
|
|
'id': self.id,
|
|
'filter': self.filter.to_dict() if isinstance(self.filter, TLObject) else self.filter
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'J\xa0\xd4\x1a',
|
|
struct.pack('<I', (0 if self.filter is None or self.filter is False else 1)),
|
|
struct.pack('<i', self.id),
|
|
b'' if self.filter is None or self.filter is False else (self.filter._bytes()),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_id = reader.read_int()
|
|
if flags & 1:
|
|
_filter = reader.tgread_object()
|
|
else:
|
|
_filter = None
|
|
return cls(id=_id, filter=_filter)
|
|
|
|
|
|
class UpdateDialogFiltersOrderRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xc563c1e4
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, order: List[int]):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.order = order
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UpdateDialogFiltersOrderRequest',
|
|
'order': [] if self.order is None else self.order[:]
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xe4\xc1c\xc5',
|
|
b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.order)),b''.join(struct.pack('<i', x) for x in self.order),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
reader.read_int()
|
|
_order = []
|
|
for _ in range(reader.read_int()):
|
|
_x = reader.read_int()
|
|
_order.append(_x)
|
|
|
|
return cls(order=_order)
|
|
|
|
|
|
class UpdatePinnedMessageRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0xd2aaf7ec
|
|
SUBCLASS_OF_ID = 0x8af52aac
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', id: int, silent: Optional[bool]=None, unpin: Optional[bool]=None, pm_oneside: Optional[bool]=None):
|
|
"""
|
|
:returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
|
|
"""
|
|
self.peer = peer
|
|
self.id = id
|
|
self.silent = silent
|
|
self.unpin = unpin
|
|
self.pm_oneside = pm_oneside
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UpdatePinnedMessageRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'id': self.id,
|
|
'silent': self.silent,
|
|
'unpin': self.unpin,
|
|
'pm_oneside': self.pm_oneside
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xec\xf7\xaa\xd2',
|
|
struct.pack('<I', (0 if self.silent is None or self.silent is False else 1) | (0 if self.unpin is None or self.unpin is False else 2) | (0 if self.pm_oneside is None or self.pm_oneside is False else 4)),
|
|
self.peer._bytes(),
|
|
struct.pack('<i', self.id),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_silent = bool(flags & 1)
|
|
_unpin = bool(flags & 2)
|
|
_pm_oneside = bool(flags & 4)
|
|
_peer = reader.tgread_object()
|
|
_id = reader.read_int()
|
|
return cls(peer=_peer, id=_id, silent=_silent, unpin=_unpin, pm_oneside=_pm_oneside)
|
|
|
|
|
|
class UpdateSavedReactionTagRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x60297dec
|
|
SUBCLASS_OF_ID = 0xf5b399ac
|
|
|
|
def __init__(self, reaction: 'TypeReaction', title: Optional[str]=None):
|
|
"""
|
|
:returns Bool: This type has no constructors.
|
|
"""
|
|
self.reaction = reaction
|
|
self.title = title
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UpdateSavedReactionTagRequest',
|
|
'reaction': self.reaction.to_dict() if isinstance(self.reaction, TLObject) else self.reaction,
|
|
'title': self.title
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\xec})`',
|
|
struct.pack('<I', (0 if self.title is None or self.title is False else 1)),
|
|
self.reaction._bytes(),
|
|
b'' if self.title is None or self.title is False else (self.serialize_bytes(self.title)),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
_reaction = reader.tgread_object()
|
|
if flags & 1:
|
|
_title = reader.tgread_string()
|
|
else:
|
|
_title = None
|
|
return cls(reaction=_reaction, title=_title)
|
|
|
|
|
|
class UploadEncryptedFileRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x5057c497
|
|
SUBCLASS_OF_ID = 0x842a67c0
|
|
|
|
def __init__(self, peer: 'TypeInputEncryptedChat', file: 'TypeInputEncryptedFile'):
|
|
"""
|
|
:returns EncryptedFile: Instance of either EncryptedFileEmpty, EncryptedFile.
|
|
"""
|
|
self.peer = peer
|
|
self.file = file
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UploadEncryptedFileRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'file': self.file.to_dict() if isinstance(self.file, TLObject) else self.file
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x97\xc4WP',
|
|
self.peer._bytes(),
|
|
self.file._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_file = reader.tgread_object()
|
|
return cls(peer=_peer, file=_file)
|
|
|
|
|
|
class UploadImportedMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x2a862092
|
|
SUBCLASS_OF_ID = 0x476cbe32
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', import_id: int, file_name: str, media: 'TypeInputMedia'):
|
|
"""
|
|
:returns MessageMedia: Instance of either MessageMediaEmpty, MessageMediaPhoto, MessageMediaGeo, MessageMediaContact, MessageMediaUnsupported, MessageMediaDocument, MessageMediaWebPage, MessageMediaVenue, MessageMediaGame, MessageMediaInvoice, MessageMediaGeoLive, MessageMediaPoll, MessageMediaDice, MessageMediaStory, MessageMediaGiveaway, MessageMediaGiveawayResults.
|
|
"""
|
|
self.peer = peer
|
|
self.import_id = import_id
|
|
self.file_name = file_name
|
|
self.media = media
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.media = utils.get_input_media(self.media)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UploadImportedMediaRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'import_id': self.import_id,
|
|
'file_name': self.file_name,
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'\x92 \x86*',
|
|
self.peer._bytes(),
|
|
struct.pack('<q', self.import_id),
|
|
self.serialize_bytes(self.file_name),
|
|
self.media._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
_peer = reader.tgread_object()
|
|
_import_id = reader.read_long()
|
|
_file_name = reader.tgread_string()
|
|
_media = reader.tgread_object()
|
|
return cls(peer=_peer, import_id=_import_id, file_name=_file_name, media=_media)
|
|
|
|
|
|
class UploadMediaRequest(TLRequest):
|
|
CONSTRUCTOR_ID = 0x14967978
|
|
SUBCLASS_OF_ID = 0x476cbe32
|
|
|
|
def __init__(self, peer: 'TypeInputPeer', media: 'TypeInputMedia', business_connection_id: Optional[str]=None):
|
|
"""
|
|
:returns MessageMedia: Instance of either MessageMediaEmpty, MessageMediaPhoto, MessageMediaGeo, MessageMediaContact, MessageMediaUnsupported, MessageMediaDocument, MessageMediaWebPage, MessageMediaVenue, MessageMediaGame, MessageMediaInvoice, MessageMediaGeoLive, MessageMediaPoll, MessageMediaDice, MessageMediaStory, MessageMediaGiveaway, MessageMediaGiveawayResults.
|
|
"""
|
|
self.peer = peer
|
|
self.media = media
|
|
self.business_connection_id = business_connection_id
|
|
|
|
async def resolve(self, client, utils):
|
|
self.peer = utils.get_input_peer(await client.get_input_entity(self.peer))
|
|
self.media = utils.get_input_media(self.media)
|
|
|
|
def to_dict(self):
|
|
return {
|
|
'_': 'UploadMediaRequest',
|
|
'peer': self.peer.to_dict() if isinstance(self.peer, TLObject) else self.peer,
|
|
'media': self.media.to_dict() if isinstance(self.media, TLObject) else self.media,
|
|
'business_connection_id': self.business_connection_id
|
|
}
|
|
|
|
def _bytes(self):
|
|
return b''.join((
|
|
b'xy\x96\x14',
|
|
struct.pack('<I', (0 if self.business_connection_id is None or self.business_connection_id is False else 1)),
|
|
b'' if self.business_connection_id is None or self.business_connection_id is False else (self.serialize_bytes(self.business_connection_id)),
|
|
self.peer._bytes(),
|
|
self.media._bytes(),
|
|
))
|
|
|
|
@classmethod
|
|
def from_reader(cls, reader):
|
|
flags = reader.read_int()
|
|
|
|
if flags & 1:
|
|
_business_connection_id = reader.tgread_string()
|
|
else:
|
|
_business_connection_id = None
|
|
_peer = reader.tgread_object()
|
|
_media = reader.tgread_object()
|
|
return cls(peer=_peer, media=_media, business_connection_id=_business_connection_id)
|
|
|