mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-06-18 11:06:39 +00:00

This frees us from using entire Session objects in something that's supposed to just send and receive items from the net.
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import struct
|
|
|
|
from . import TLObject
|
|
from .tl_message import TLMessage
|
|
|
|
|
|
class MessageContainer(TLObject):
|
|
CONSTRUCTOR_ID = 0x73f1f8dc
|
|
|
|
def __init__(self, messages):
|
|
super().__init__()
|
|
self.content_related = False
|
|
self.messages = messages
|
|
|
|
def to_dict(self, recursive=True):
|
|
return {
|
|
'content_related': self.content_related,
|
|
'messages':
|
|
([] if self.messages is None else [
|
|
None if x is None else x.to_dict() for x in self.messages
|
|
]) if recursive else self.messages,
|
|
}
|
|
|
|
def __bytes__(self):
|
|
return struct.pack(
|
|
'<Ii', MessageContainer.CONSTRUCTOR_ID, len(self.messages)
|
|
) + b''.join(bytes(m) for m in self.messages)
|
|
|
|
@staticmethod
|
|
def iter_read(reader):
|
|
reader.read_int(signed=False) # code
|
|
size = reader.read_int()
|
|
for _ in range(size):
|
|
inner_msg_id = reader.read_long()
|
|
inner_sequence = reader.read_int()
|
|
inner_length = reader.read_int()
|
|
yield TLMessage(inner_msg_id, inner_sequence,
|
|
body=reader.read(inner_length))
|
|
|
|
def __str__(self):
|
|
return TLObject.pretty_format(self)
|
|
|
|
def stringify(self):
|
|
return TLObject.pretty_format(self, indent=0)
|