Skip to content

Commit

Permalink
Update to layer 125
Browse files Browse the repository at this point in the history
Closes LonamiWebs#1728, should close LonamiWebs#1724.
  • Loading branch information
Lonami authored and kfur committed Oct 21, 2021
1 parent fdf2d33 commit 8c31702
Show file tree
Hide file tree
Showing 3 changed files with 274 additions and 29 deletions.
10 changes: 5 additions & 5 deletions telethon/events/userupdate.py
Expand Up @@ -40,11 +40,11 @@ class UserUpdate(EventBuilder):
@classmethod
def build(cls, update, others=None, self_id=None):
if isinstance(update, types.UpdateUserStatus):
return cls.Event(update.user_id,
return cls.Event(types.PeerUser(update.user_id),
status=update.status)
elif isinstance(update, types.UpdateChatUserTyping):
# Unfortunately, we can't know whether `chat_id`'s type
return cls.Event(update.user_id,
return cls.Event(update.from_id,
chat_id=update.chat_id,
typing=update.action)
elif isinstance(update, types.UpdateUserTyping):
Expand All @@ -71,15 +71,15 @@ class Event(EventCommon, SenderGetter):
of the typing properties, since they will all be `None`
if the action is not set.
"""
def __init__(self, user_id, *, status=None, chat_id=None, typing=None):
def __init__(self, peer, *, status=None, chat_id=None, typing=None):
if chat_id is None:
super().__init__(types.PeerUser(user_id))
super().__init__(peer)
else:
# Temporarily set the chat_peer to the ID until ._set_client.
# We need the client to actually figure out its type.
super().__init__(chat_id)

SenderGetter.__init__(self, user_id)
SenderGetter.__init__(self, utils.get_peer_id(peer))

self.status = status
self.action = typing
Expand Down
216 changes: 216 additions & 0 deletions telethon/tl/patched/__init__.py
@@ -0,0 +1,216 @@
"""File generated by TLObjects' generator. All changes will be ERASED"""
import struct
from .. import TLObject, types, custom

class MessageEmpty(custom.message.Message):
CONSTRUCTOR_ID = 0x83e5de54
SUBCLASS_OF_ID = 0x790009e3
def to_dict(self):
return {
'_': 'MessageEmpty',
'id': self.id
}

def __bytes__(self):
return b''.join((
b'T\xde\xe5\x83',
struct.pack('<i', self.id),
))

@classmethod
def from_reader(cls, reader):
_id = reader.read_int()
return cls(id=_id)

types.MessageEmpty = MessageEmpty

class Message(custom.message.Message):
CONSTRUCTOR_ID = 0x452c0e65
SUBCLASS_OF_ID = 0x790009e3
def to_dict(self):
return {
'_': 'Message',
'id': self.id,
'to_id': self.to_id.to_dict() if isinstance(self.to_id, TLObject) else self.to_id,
'date': self.date,
'message': self.message,
'out': self.out,
'mentioned': self.mentioned,
'media_unread': self.media_unread,
'silent': self.silent,
'post': self.post,
'from_scheduled': self.from_scheduled,
'legacy': self.legacy,
'edit_hide': self.edit_hide,
'from_id': self.from_id,
'fwd_from': self.fwd_from.to_dict() if isinstance(self.fwd_from, TLObject) else self.fwd_from,
'via_bot_id': self.via_bot_id,
'reply_to_msg_id': self.reply_to_msg_id,
'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],
'views': self.views,
'edit_date': self.edit_date,
'post_author': self.post_author,
'grouped_id': self.grouped_id,
'restriction_reason': [] if self.restriction_reason is None else [x.to_dict() if isinstance(x, TLObject) else x for x in self.restriction_reason]
}

def __bytes__(self):
return b''.join((
b'e\x0e,E',
struct.pack('<I', (0 if self.out is None or self.out is False else 2) | (0 if self.mentioned is None or self.mentioned is False else 16) | (0 if self.media_unread is None or self.media_unread is False else 32) | (0 if self.silent is None or self.silent is False else 8192) | (0 if self.post is None or self.post is False else 16384) | (0 if self.from_scheduled is None or self.from_scheduled is False else 262144) | (0 if self.legacy is None or self.legacy is False else 524288) | (0 if self.edit_hide is None or self.edit_hide is False else 2097152) | (0 if self.from_id is None or self.from_id is False else 256) | (0 if self.fwd_from is None or self.fwd_from is False else 4) | (0 if self.via_bot_id is None or self.via_bot_id is False else 2048) | (0 if self.reply_to_msg_id is None or self.reply_to_msg_id is False else 8) | (0 if self.media is None or self.media is False else 512) | (0 if self.reply_markup is None or self.reply_markup is False else 64) | (0 if self.entities is None or self.entities is False else 128) | (0 if self.views is None or self.views is False else 1024) | (0 if self.edit_date is None or self.edit_date is False else 32768) | (0 if self.post_author is None or self.post_author is False else 65536) | (0 if self.grouped_id is None or self.grouped_id is False else 131072) | (0 if self.restriction_reason is None or self.restriction_reason is False else 4194304)),
struct.pack('<i', self.id),
b'' if self.from_id is None or self.from_id is False else (struct.pack('<i', self.from_id)),
bytes(self.to_id),
b'' if self.fwd_from is None or self.fwd_from is False else (bytes(self.fwd_from)),
b'' if self.via_bot_id is None or self.via_bot_id is False else (struct.pack('<i', self.via_bot_id)),
b'' if self.reply_to_msg_id is None or self.reply_to_msg_id is False else (struct.pack('<i', self.reply_to_msg_id)),
self.serialize_datetime(self.date),
self.serialize_bytes(self.message),
b'' if self.media is None or self.media is False else (bytes(self.media)),
b'' if self.reply_markup is None or self.reply_markup is False else (bytes(self.reply_markup)),
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(bytes(x) for x in self.entities))),
b'' if self.views is None or self.views is False else (struct.pack('<i', self.views)),
b'' if self.edit_date is None or self.edit_date is False else (self.serialize_datetime(self.edit_date)),
b'' if self.post_author is None or self.post_author is False else (self.serialize_bytes(self.post_author)),
b'' if self.grouped_id is None or self.grouped_id is False else (struct.pack('<q', self.grouped_id)),
b'' if self.restriction_reason is None or self.restriction_reason is False else b''.join((b'\x15\xc4\xb5\x1c',struct.pack('<i', len(self.restriction_reason)),b''.join(bytes(x) for x in self.restriction_reason))),
))

@classmethod
def from_reader(cls, reader):
flags = reader.read_int()

_out = bool(flags & 2)
_mentioned = bool(flags & 16)
_media_unread = bool(flags & 32)
_silent = bool(flags & 8192)
_post = bool(flags & 16384)
_from_scheduled = bool(flags & 262144)
_legacy = bool(flags & 524288)
_edit_hide = bool(flags & 2097152)
_id = reader.read_int()
if flags & 256:
_from_id = reader.read_int()
else:
_from_id = None
_to_id = reader.tgread_object()
if flags & 4:
_fwd_from = reader.tgread_object()
else:
_fwd_from = None
if flags & 2048:
_via_bot_id = reader.read_int()
else:
_via_bot_id = None
if flags & 8:
_reply_to_msg_id = reader.read_int()
else:
_reply_to_msg_id = None
_date = reader.tgread_date()
_message = reader.tgread_string()
if flags & 512:
_media = reader.tgread_object()
else:
_media = None
if flags & 64:
_reply_markup = reader.tgread_object()
else:
_reply_markup = None
if flags & 128:
reader.read_int()
_entities = []
for _ in range(reader.read_int()):
_x = reader.tgread_object()
_entities.append(_x)

else:
_entities = None
if flags & 1024:
_views = reader.read_int()
else:
_views = None
if flags & 32768:
_edit_date = reader.tgread_date()
else:
_edit_date = None
if flags & 65536:
_post_author = reader.tgread_string()
else:
_post_author = None
if flags & 131072:
_grouped_id = reader.read_long()
else:
_grouped_id = None
if flags & 4194304:
reader.read_int()
_restriction_reason = []
for _ in range(reader.read_int()):
_x = reader.tgread_object()
_restriction_reason.append(_x)

else:
_restriction_reason = None
return cls(id=_id, to_id=_to_id, date=_date, message=_message, out=_out, mentioned=_mentioned, media_unread=_media_unread, silent=_silent, post=_post, from_scheduled=_from_scheduled, legacy=_legacy, edit_hide=_edit_hide, from_id=_from_id, fwd_from=_fwd_from, via_bot_id=_via_bot_id, reply_to_msg_id=_reply_to_msg_id, media=_media, reply_markup=_reply_markup, entities=_entities, views=_views, edit_date=_edit_date, post_author=_post_author, grouped_id=_grouped_id, restriction_reason=_restriction_reason)

types.Message = Message

class MessageService(custom.message.Message):
CONSTRUCTOR_ID = 0x9e19a1f6
SUBCLASS_OF_ID = 0x790009e3
def to_dict(self):
return {
'_': 'MessageService',
'id': self.id,
'to_id': self.to_id.to_dict() if isinstance(self.to_id, TLObject) else self.to_id,
'date': self.date,
'action': self.action.to_dict() if isinstance(self.action, TLObject) else self.action,
'out': self.out,
'mentioned': self.mentioned,
'media_unread': self.media_unread,
'silent': self.silent,
'post': self.post,
'legacy': self.legacy,
'from_id': self.from_id,
'reply_to_msg_id': self.reply_to_msg_id
}

def __bytes__(self):
return b''.join((
b'\xf6\xa1\x19\x9e',
struct.pack('<I', (0 if self.out is None or self.out is False else 2) | (0 if self.mentioned is None or self.mentioned is False else 16) | (0 if self.media_unread is None or self.media_unread is False else 32) | (0 if self.silent is None or self.silent is False else 8192) | (0 if self.post is None or self.post is False else 16384) | (0 if self.legacy is None or self.legacy is False else 524288) | (0 if self.from_id is None or self.from_id is False else 256) | (0 if self.reply_to_msg_id is None or self.reply_to_msg_id is False else 8)),
struct.pack('<i', self.id),
b'' if self.from_id is None or self.from_id is False else (struct.pack('<i', self.from_id)),
bytes(self.to_id),
b'' if self.reply_to_msg_id is None or self.reply_to_msg_id is False else (struct.pack('<i', self.reply_to_msg_id)),
self.serialize_datetime(self.date),
bytes(self.action),
))

@classmethod
def from_reader(cls, reader):
flags = reader.read_int()

_out = bool(flags & 2)
_mentioned = bool(flags & 16)
_media_unread = bool(flags & 32)
_silent = bool(flags & 8192)
_post = bool(flags & 16384)
_legacy = bool(flags & 524288)
_id = reader.read_int()
if flags & 256:
_from_id = reader.read_int()
else:
_from_id = None
_to_id = reader.tgread_object()
if flags & 8:
_reply_to_msg_id = reader.read_int()
else:
_reply_to_msg_id = None
_date = reader.tgread_date()
_action = reader.tgread_object()
return cls(id=_id, to_id=_to_id, date=_date, action=_action, out=_out, mentioned=_mentioned, media_unread=_media_unread, silent=_silent, post=_post, legacy=_legacy, from_id=_from_id, reply_to_msg_id=_reply_to_msg_id)

types.MessageService = MessageService

0 comments on commit 8c31702

Please sign in to comment.