Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-Telethon for openSUSE:Factory 
checked in at 2022-12-06 14:23:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Telethon (Old)
 and      /work/SRC/openSUSE:Factory/.python-Telethon.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Telethon"

Tue Dec  6 14:23:46 2022 rev:9 rq:1040444 version:1.26.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Telethon/python-Telethon.changes  
2022-10-29 20:18:37.534696197 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-Telethon.new.1835/python-Telethon.changes    
    2022-12-06 14:24:02.613968623 +0100
@@ -1,0 +2,14 @@
+Mon Dec  5 19:32:14 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com>
+
+- Update to version 1.26.0 
+  * Bump to v1.26 and update layer to 149
+    Sort updates preemptively
+    Closes #3936.
+    There are two changes made to ensure the first update in a channel
+    cannot be lost, first by always sorting updates before applying pts,
+    and second by cautiously initializing the local pts if the client
+    had no pts known beforehand.
+    It might be possible to cleanup the handling of possible gaps now
+    that updates are always sorted, but that requires more thought.
+
+-------------------------------------------------------------------

Old:
----
  Telethon-1.25.4.tar.gz

New:
----
  Telethon-1.26.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Telethon.spec ++++++
--- /var/tmp/diff_new_pack.Vt0P1I/_old  2022-12-06 14:24:03.101972784 +0100
+++ /var/tmp/diff_new_pack.Vt0P1I/_new  2022-12-06 14:24:03.109972852 +0100
@@ -21,7 +21,7 @@
 %define skip_python2 1
 %define modname Telethon
 Name:           python-Telethon
-Version:        1.25.4
+Version:        1.26.0
 Release:        0
 Summary:        Full-featured Telegram client library for Python 3
 License:        MIT

++++++ Telethon-1.25.4.tar.gz -> Telethon-1.26.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Telethon-1.25.4/readthedocs/concepts/botapi-vs-mtproto.rst 
new/Telethon-1.26.0/readthedocs/concepts/botapi-vs-mtproto.rst
--- old/Telethon-1.25.4/readthedocs/concepts/botapi-vs-mtproto.rst      
2022-10-14 18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/readthedocs/concepts/botapi-vs-mtproto.rst      
2022-11-25 18:23:28.000000000 +0100
@@ -28,6 +28,9 @@
 Bot API is simply an HTTP endpoint which translates your requests to it into
 MTProto calls through tdlib_, their bot backend.
 
+Configuration of your bot, such as its available commands and auto-completion,
+is configured through `@BotFather <https://t.me/BotFather>`_.
+
 
 What is MTProto?
 ================
@@ -296,7 +299,7 @@
 
     class Subbot(TelegramClient):
         def __init__(self, *a, **kw):
-            await super().__init__(*a, **kw)
+            super().__init__(*a, **kw)
             self.add_event_handler(self.on_update, events.NewMessage)
 
         async def connect():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/readthedocs/concepts/updates.rst 
new/Telethon-1.26.0/readthedocs/concepts/updates.rst
--- old/Telethon-1.25.4/readthedocs/concepts/updates.rst        2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/readthedocs/concepts/updates.rst        2022-11-25 
18:23:28.000000000 +0100
@@ -207,7 +207,7 @@
 <telethon.client.telegrambaseclient.TelegramBaseClient.disconnected>`,
 `client.run_until_disconnected
 <telethon.client.updates.UpdateMethods.run_until_disconnected>` will
-handle ``KeyboardInterrupt`` with you. This method is special and can
+handle ``KeyboardInterrupt`` for you. This method is special and can
 also be ran while the loop is running, so you can do this:
 
 .. code-block:: python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Telethon-1.25.4/readthedocs/examples/working-with-messages.rst 
new/Telethon-1.26.0/readthedocs/examples/working-with-messages.rst
--- old/Telethon-1.25.4/readthedocs/examples/working-with-messages.rst  
2022-10-14 18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/readthedocs/examples/working-with-messages.rst  
2022-11-25 18:23:28.000000000 +0100
@@ -86,5 +86,40 @@
 you to provide the emoji in some form. Some packages or websites can make this
 easier.
 
+
+Sending spoilers (hidden text)
+==============================
+
+The current markdown and HTML parsers do not offer a way to send spoilers yet.
+You need to use :tl:`MessageEntitySpoiler` so that parts of the message text
+are shown under a spoiler.
+
+The simplest way to do this is to `modify the builtin parsers`_ to support
+sending these new message entities with the features they already provide.
+
+
+Sending custom emoji
+====================
+
+The current markdown and HTML parsers do not offer a way to send custom emoji
+yet. You need to use :tl:`MessageEntityCustomEmoji` so that parts of the
+message text with emoji are replaced with a custom one instead.
+
+The simplest way to do this is to `modify the builtin parsers`_ to support
+sending these new message entities with the features they already provide.
+
+:tl:`MessageEntityCustomEmoji` must wrap an emoji in order to work (you can't
+put it around arbitrary ``"text"``, it won't work), so be sure to keep this in
+mind when using it.
+
+To find the ``document_id`` for the custom emoji, the simplest way is to send
+a message with an official client containing the custom emoji you want, and
+then print the ``message.entities`` to find the ``document_id``.
+
+If you prefer, you can also use :tl:`GetFeaturedEmojiStickers` to find about
+the ``document_id`` of featured custom emoji.
+
+
 .. _unicode-table.com: https://unicode-table.com/en/emoji/
 .. _emoji: https://pypi.org/project/emoji/
+.. _modify the builtin parsers: 
https://github.com/LonamiWebs/Telethon/wiki/Sending-spoilers-and-custom-emoji
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/readthedocs/misc/changelog.rst 
new/Telethon-1.26.0/readthedocs/misc/changelog.rst
--- old/Telethon-1.25.4/readthedocs/misc/changelog.rst  2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/readthedocs/misc/changelog.rst  2022-11-25 
18:23:28.000000000 +0100
@@ -13,6 +13,39 @@
 
 .. contents:: List of All Versions
 
+New Layer and some Bug fixes (v1.26)
+====================================
+
+This new layer includes things such as emoji status, more admin log events,
+forum topics and message reactions, among other things. You can access these
+using raw API. It also contains a few bug fixes.
+
+These were fixed in the v1.25 series:
+
+* ``client.edit_admin`` did not work on small group chats.
+* ``client.get_messages`` could stop early in some channels.
+* ``client.download_profile_photo`` now should work even if ``User.min``.
+* ``client.disconnect`` should no longer hang when being called from within
+  an event handlers.
+* ``client.get_dialogs`` now initializes the update state for channels.
+* The message sender should not need to be fetched in more cases.
+* Lowered the severity of some log messages to be less spammy.
+
+These are new to v1.26.0:
+
+* Layer update.
+* New documented RPC errors.
+* Sometimes the first message update to a channel could be missed if said
+  message was read immediately.
+* ``client.get_dialogs`` would fail when the total count evenly divided
+  the chunk size of 100.
+* ``client.get_messages`` could get stuck during a global search.
+* Potentially fixed some issues when sending certain videos.
+* Update handling should be more resilient.
+* The client should handle having its auth key destroyed more gracefully.
+* Fixed some issues when logging certain messages.
+
+
 Bug fixes (v1.25.1)
 ===================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/_updates/messagebox.py 
new/Telethon-1.26.0/telethon/_updates/messagebox.py
--- old/Telethon-1.25.4/telethon/_updates/messagebox.py 2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/_updates/messagebox.py 2022-11-25 
18:23:28.000000000 +0100
@@ -423,14 +423,26 @@
             if seq != NO_SEQ:
                 self.seq = seq
 
-        result.extend(filter(None, (self.apply_pts_info(u, 
reset_deadline=True) for u in updates)))
-
-        self.apply_deadlines_reset()
-
         def _sort_gaps(update):
             pts = PtsInfo.from_update(update)
             return pts.pts - pts.pts_count if pts else 0
 
+        # Telegram can send updates out of order (e.g. ReadChannelInbox first
+        # and then NewChannelMessage, both with the same pts, but the count is
+        # 0 and 1 respectively).
+        #
+        # We can't know beforehand if this would cause issues (i.e. if any of
+        # the updates is the first one we get to know about a specific channel)
+        # (other than doing a pre-scan to check if any has info about an entry
+        # we lack), so instead we sort preemptively. As a bonus there's less
+        # likelyhood of "possible gaps" by doing this.
+        # TODO give this more thought, perhaps possible gaps can't happen at 
all
+        #      (not ones which would be resolved by sorting anyway)
+        result.extend(filter(None, (
+            self.apply_pts_info(u, reset_deadline=True) for u in 
sorted(updates, key=_sort_gaps))))
+
+        self.apply_deadlines_reset()
+
         if self.possible_gaps:
             # For each update in possible gaps, see if the gap has been 
resolved already.
             for key in list(self.possible_gaps.keys()):
@@ -506,23 +518,28 @@
             else:
                 # Apply
                 pass
-        else:
-            # No previous `pts` known, and because this update has to be 
"right" (it's the first one) our
-            # `local_pts` must be the one before the server pts.
-            local_pts = pts.pts - pts.pts_count
 
         # In a channel, we may immediately receive:
-        # * ReadChannelInbox (pts = X)
+        # * ReadChannelInbox (pts = X, pts_count = 0)
         # * NewChannelMessage (pts = X, pts_count = 1)
         #
-        # Notice how both `pts` are the same. The first one however would've 
triggered a gap
-        # because `local_pts` + `pts_count` of 0 would be less than 
`remote_pts`. So there is
-        # no risk by setting the `local_pts` to match the `remote_pts` here of 
missing the new
-        # message.
+        # Notice how both `pts` are the same. If they were to be applied out 
of order, the first
+        # one however would've triggered a gap because `local_pts` + 
`pts_count` of 0 would be
+        # less than `remote_pts`. So there is no risk by setting the 
`local_pts` to match the
+        # `remote_pts` here of missing the new message.
+        #
+        # The message would however be lost if we initialized the pts with the 
first one, since
+        # the second one would appear "already handled". To prevent this we 
set the pts to be
+        # one less when the count is 0 (which might be wrong and trigger a gap 
later on, but is
+        # unlikely). This will prevent us from losing updates in the unlikely 
scenario where these
+        # two updates arrive in different packets (and therefore couldn't be 
sorted beforehand).
         if pts.entry in self.map:
             self.map[pts.entry].pts = pts.pts
         else:
-            self.map[pts.entry] = State(pts=pts.pts, 
deadline=next_updates_deadline())
+            self.map[pts.entry] = State(
+                pts=pts.pts - (0 if pts.pts_count else 1),
+                deadline=next_updates_deadline()
+            )
 
         return update
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/client/dialogs.py 
new/Telethon-1.26.0/telethon/client/dialogs.py
--- old/Telethon-1.25.4/telethon/client/dialogs.py      2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/client/dialogs.py      2022-11-25 
18:23:28.000000000 +0100
@@ -91,8 +91,9 @@
                         cd.entity, 'migrated_to', None) is None:
                     self.buffer.append(cd)
 
-        if len(r.dialogs) < self.request.limit\
+        if not self.buffer or len(r.dialogs) < self.request.limit\
                 or not isinstance(r, types.messages.DialogsSlice):
+            # Buffer being empty means all returned dialogs were skipped (due 
to offsets).
             # Less than we requested means we reached the end, or
             # we didn't get a DialogsSlice which means we got all.
             return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/client/messages.py 
new/Telethon-1.26.0/telethon/client/messages.py
--- old/Telethon-1.25.4/telethon/client/messages.py     2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/client/messages.py     2022-11-25 
18:23:28.000000000 +0100
@@ -204,6 +204,10 @@
             message._finish_init(self.client, entities, self.entity)
             self.buffer.append(message)
 
+        # Not a slice (using offset would return the same, with e.g. 
SearchGlobal).
+        if isinstance(r, types.messages.Messages):
+            return True
+
         # Some channels are "buggy" and may return less messages than
         # requested (apparently, the messages excluded are, for example,
         # "not displayable due to local laws").
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/client/updates.py 
new/Telethon-1.26.0/telethon/client/updates.py
--- old/Telethon-1.25.4/telethon/client/updates.py      2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/client/updates.py      2022-11-25 
18:23:28.000000000 +0100
@@ -290,6 +290,13 @@
                         self._log[__name__].info('Cannot get difference since 
the account is not logged in: %s', type(e).__name__)
                         self._message_box.end_difference()
                         continue
+                    except OSError as e:
+                        # Network is likely down, but it's unclear for how 
long.
+                        # If disconnect is called this task will be cancelled 
along with the sleep.
+                        # If disconnect is not called, getting difference 
should be retried after a few seconds.
+                        self._log[__name__].info('Cannot get difference since 
the network is down: %s: %s', type(e).__name__, e)
+                        await asyncio.sleep(5)
+                        continue
                     updates, users, chats = 
self._message_box.apply_difference(diff, self._mb_entity_cache)
                     if updates:
                         self._log[__name__].info('Got difference for account 
updates')
@@ -351,6 +358,13 @@
                             self._mb_entity_cache
                         )
                         continue
+                    except OSError as e:
+                        self._log[__name__].info(
+                            'Cannot get difference for channel %d since the 
network is down: %s: %s',
+                            get_diff.channel.channel_id, type(e).__name__, e
+                        )
+                        await asyncio.sleep(5)
+                        continue
 
                     updates, users, chats = 
self._message_box.apply_channel_difference(get_diff, diff, 
self._mb_entity_cache)
                     if updates:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/client/uploads.py 
new/Telethon-1.26.0/telethon/client/uploads.py
--- old/Telethon-1.25.4/telethon/client/uploads.py      2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/client/uploads.py      2022-11-25 
18:23:28.000000000 +0100
@@ -458,7 +458,7 @@
                 ))
 
                 fm = utils.get_input_media(
-                    r.document, supports_streaming=supports_streaming)
+                   r.document, supports_streaming=supports_streaming)
 
             if captions:
                 caption, msg_entities = captions.pop()
@@ -753,13 +753,18 @@
                     thumb = str(thumb.absolute())
                 thumb = await self.upload_file(thumb, file_size=file_size)
 
+            # setting `nosound_video` to `True` doesn't affect videos with 
sound
+            # instead it prevents sending silent videos as GIFs
+            nosound_video = True if mime_type.split("/")[0] == 'video' else 
None
+
             media = types.InputMediaUploadedDocument(
                 file=file_handle,
                 mime_type=mime_type,
                 attributes=attributes,
                 thumb=thumb,
                 force_file=force_document and not is_image,
-                ttl_seconds=ttl
+                ttl_seconds=ttl,
+                nosound_video=nosound_video
             )
         return file_handle, media, as_image
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/network/mtprotosender.py 
new/Telethon-1.26.0/telethon/network/mtprotosender.py
--- old/Telethon-1.25.4/telethon/network/mtprotosender.py       2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon/network/mtprotosender.py       2022-11-25 
18:23:28.000000000 +0100
@@ -16,11 +16,12 @@
 from ..extensions import BinaryReader
 from ..tl.core import RpcResult, MessageContainer, GzipPacked
 from ..tl.functions.auth import LogOutRequest
-from ..tl.functions import PingRequest, DestroySessionRequest
+from ..tl.functions import PingRequest, DestroySessionRequest, 
DestroyAuthKeyRequest
 from ..tl.types import (
     MsgsAck, Pong, BadServerSalt, BadMsgNotification, FutureSalts,
     MsgNewDetailedInfo, NewSessionCreated, MsgDetailedInfo, MsgsStateReq,
     MsgsStateInfo, MsgsAllInfo, MsgResendReq, upload, DestroySessionOk, 
DestroySessionNone,
+    DestroyAuthKeyOk, DestroyAuthKeyNone, DestroyAuthKeyFail
 )
 from ..tl import types as _tl
 from ..crypto import AuthKey
@@ -109,8 +110,11 @@
             MsgsStateReq.CONSTRUCTOR_ID: self._handle_state_forgotten,
             MsgResendReq.CONSTRUCTOR_ID: self._handle_state_forgotten,
             MsgsAllInfo.CONSTRUCTOR_ID: self._handle_msg_all,
-            DestroySessionOk: self._handle_destroy_session,
-            DestroySessionNone: self._handle_destroy_session,
+            DestroySessionOk.CONSTRUCTOR_ID: self._handle_destroy_session,
+            DestroySessionNone.CONSTRUCTOR_ID: self._handle_destroy_session,
+            DestroyAuthKeyOk.CONSTRUCTOR_ID: self._handle_destroy_auth_key,
+            DestroyAuthKeyNone.CONSTRUCTOR_ID: self._handle_destroy_auth_key,
+            DestroyAuthKeyFail.CONSTRUCTOR_ID: self._handle_destroy_auth_key,
         }
 
     # Public API
@@ -653,7 +657,11 @@
         try:
             assert message.obj.SUBCLASS_OF_ID == 0x8af52aac  # 
crc32(b'Updates')
         except AssertionError:
-            self._log.warning('Note: %s is not an update, not dispatching it 
%s', message.obj)
+            self._log.warning(
+                'Note: %s is not an update, not dispatching it %s',
+                message.obj.__class__.__name__,
+                message.obj
+            )
             return
 
         self._log.debug('Handling update %s', message.obj.__class__.__name__)
@@ -845,3 +853,26 @@
         del self._pending_state[msg_id]
         if not state.future.cancelled():
             state.future.set_result(message.obj)
+
+    async def _handle_destroy_auth_key(self, message):
+        """
+        Handles :tl:`DestroyAuthKeyFail`, :tl:`DestroyAuthKeyNone`, and 
:tl:`DestroyAuthKeyOk`.
+
+        :tl:`DestroyAuthKey` is not intended for users to use, but they still
+        might, and the response won't come in `rpc_result`, so thhat's worked
+        around here.
+        """
+        self._log.debug('Handling destroy auth key %s', message.obj)
+        for msg_id, state in list(self._pending_state.items()):
+            if isinstance(state.request, DestroyAuthKeyRequest):
+                del self._pending_state[msg_id]
+                if not state.future.cancelled():
+                    state.future.set_result(message.obj)
+
+        # If the auth key has been destroyed, that pretty much means the
+        # library can't continue as our auth key will no longer be found
+        # on the server.
+        # Even if the library didn't disconnect, the server would (and then
+        # the library would reconnect and learn about auth key being invalid).
+        if isinstance(message.obj, DestroyAuthKeyOk):
+            await self._disconnect(error=AuthKeyNotFound())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon/version.py 
new/Telethon-1.26.0/telethon/version.py
--- old/Telethon-1.25.4/telethon/version.py     2022-10-14 18:43:44.000000000 
+0200
+++ new/Telethon-1.26.0/telethon/version.py     2022-11-25 18:23:28.000000000 
+0100
@@ -1,3 +1,3 @@
 # Versions should comply with PEP440.
 # This line is parsed in setup.py:
-__version__ = '1.25.4'
+__version__ = '1.26.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon_generator/data/api.tl 
new/Telethon-1.26.0/telethon_generator/data/api.tl
--- old/Telethon-1.25.4/telethon_generator/data/api.tl  2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon_generator/data/api.tl  2022-11-25 
18:23:28.000000000 +0100
@@ -68,7 +68,7 @@
 inputMediaPhotoExternal#e5bbfe1a flags:# url:string ttl_seconds:flags.0?int = 
InputMedia;
 inputMediaDocumentExternal#fb52dc99 flags:# url:string ttl_seconds:flags.0?int 
= InputMedia;
 inputMediaGame#d33f43f3 id:InputGame = InputMedia;
-inputMediaInvoice#d9799874 flags:# title:string description:string 
photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string 
provider_data:DataJSON start_param:flags.1?string = InputMedia;
+inputMediaInvoice#8eb5a6d5 flags:# title:string description:string 
photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string 
provider_data:DataJSON start_param:flags.1?string 
extended_media:flags.2?InputMedia = InputMedia;
 inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true 
geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int 
proximity_notification_radius:flags.3?int = InputMedia;
 inputMediaPoll#f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> 
solution:flags.1?string solution_entities:flags.1?Vector<MessageEntity> = 
InputMedia;
 inputMediaDice#e66fbf7b emoticon:string = InputMedia;
@@ -110,7 +110,7 @@
 storage.fileWebp#1081464c = storage.FileType;
 
 userEmpty#d3bc4b7a id:long = User;
-user#3ff6ecb0 flags:# self:flags.10?true contact:flags.11?true 
mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true 
bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true 
restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true 
support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true 
fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true 
attach_menu_enabled:flags.29?true id:long access_hash:flags.0?long 
first_name:flags.1?string last_name:flags.2?string username:flags.3?string 
phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus 
bot_info_version:flags.14?int 
restriction_reason:flags.18?Vector<RestrictionReason> 
bot_inline_placeholder:flags.19?string lang_code:flags.22?string = User;
+user#8f97c628 flags:# self:flags.10?true contact:flags.11?true 
mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true 
bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true 
restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true 
support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true 
fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true 
attach_menu_enabled:flags.29?true flags2:# id:long access_hash:flags.0?long 
first_name:flags.1?string last_name:flags.2?string username:flags.3?string 
phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus 
bot_info_version:flags.14?int 
restriction_reason:flags.18?Vector<RestrictionReason> 
bot_inline_placeholder:flags.19?string lang_code:flags.22?string 
emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> = User;
 
 userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto;
 userProfilePhoto#82d1f706 flags:# has_video:flags.0?true photo_id:long 
stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto;
@@ -125,11 +125,11 @@
 chatEmpty#29562865 id:long = Chat;
 chat#41cbf256 flags:# creator:flags.0?true left:flags.2?true 
deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true 
noforwards:flags.25?true id:long title:string photo:ChatPhoto 
participants_count:int date:int version:int migrated_to:flags.6?InputChannel 
admin_rights:flags.14?ChatAdminRights 
default_banned_rights:flags.18?ChatBannedRights = Chat;
 chatForbidden#6592a1a7 id:long title:string = Chat;
-channel#8261ac61 flags:# creator:flags.0?true left:flags.2?true 
broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true 
restricted:flags.9?true signatures:flags.11?true min:flags.12?true 
scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true 
slowmode_enabled:flags.22?true call_active:flags.23?true 
call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true 
noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true 
id:long access_hash:flags.13?long title:string username:flags.6?string 
photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> 
admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights 
default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int 
= Chat;
+channel#83259464 flags:# creator:flags.0?true left:flags.2?true 
broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true 
restricted:flags.9?true signatures:flags.11?true min:flags.12?true 
scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true 
slowmode_enabled:flags.22?true call_active:flags.23?true 
call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true 
noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true 
forum:flags.30?true flags2:# id:long access_hash:flags.13?long title:string 
username:flags.6?string photo:ChatPhoto date:int 
restriction_reason:flags.9?Vector<RestrictionReason> 
admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights 
default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int 
usernames:flags2.0?Vector<Username> = Chat;
 channelForbidden#17d493d5 flags:# broadcast:flags.5?true 
megagroup:flags.8?true id:long access_hash:long title:string 
until_date:flags.16?int = Chat;
 
-chatFull#d18ee226 flags:# can_set_username:flags.7?true 
has_scheduled:flags.8?true id:long about:string participants:ChatParticipants 
chat_photo:flags.2?Photo notify_settings:PeerNotifySettings 
exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector<BotInfo> 
pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall 
ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer 
theme_emoticon:flags.16?string requests_pending:flags.17?int 
recent_requesters:flags.17?Vector<long> 
available_reactions:flags.18?Vector<string> = ChatFull;
-channelFull#ea68a619 flags:# can_view_participants:flags.3?true 
can_set_username:flags.6?true can_set_stickers:flags.7?true 
hidden_prehistory:flags.10?true can_set_location:flags.16?true 
has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true 
flags2:# can_delete_channel:flags2.0?true id:long about:string 
participants_count:flags.0?int admins_count:flags.1?int 
kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int 
read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo 
notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite 
bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long 
migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int 
stickerset:flags.8?StickerSet available_min_id:flags.9?int 
folder_id:flags.11?int linked_chat_id:flags.14?long 
location:flags.15?ChannelLocation slowmode_seconds:flags.17?int 
slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int 
call:flags.21?Inp
 utGroupCall ttl_period:flags.24?int 
pending_suggestions:flags.25?Vector<string> 
groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string 
requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> 
default_send_as:flags.29?Peer available_reactions:flags.30?Vector<string> = 
ChatFull;
+chatFull#c9d31138 flags:# can_set_username:flags.7?true 
has_scheduled:flags.8?true id:long about:string participants:ChatParticipants 
chat_photo:flags.2?Photo notify_settings:PeerNotifySettings 
exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector<BotInfo> 
pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall 
ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer 
theme_emoticon:flags.16?string requests_pending:flags.17?int 
recent_requesters:flags.17?Vector<long> 
available_reactions:flags.18?ChatReactions = ChatFull;
+channelFull#f2355507 flags:# can_view_participants:flags.3?true 
can_set_username:flags.6?true can_set_stickers:flags.7?true 
hidden_prehistory:flags.10?true can_set_location:flags.16?true 
has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true 
flags2:# can_delete_channel:flags2.0?true id:long about:string 
participants_count:flags.0?int admins_count:flags.1?int 
kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int 
read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo 
notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite 
bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long 
migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int 
stickerset:flags.8?StickerSet available_min_id:flags.9?int 
folder_id:flags.11?int linked_chat_id:flags.14?long 
location:flags.15?ChannelLocation slowmode_seconds:flags.17?int 
slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int 
call:flags.21?Inp
 utGroupCall ttl_period:flags.24?int 
pending_suggestions:flags.25?Vector<string> 
groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string 
requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> 
default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions = 
ChatFull;
 
 chatParticipant#c02d4007 user_id:long inviter_id:long date:int = 
ChatParticipant;
 chatParticipantCreator#e46bcee4 user_id:long = ChatParticipant;
@@ -154,7 +154,7 @@
 messageMediaWebPage#a32dd600 webpage:WebPage = MessageMedia;
 messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string 
provider:string venue_id:string venue_type:string = MessageMedia;
 messageMediaGame#fdb19008 game:Game = MessageMedia;
-messageMediaInvoice#84551347 flags:# shipping_address_requested:flags.1?true 
test:flags.3?true title:string description:string photo:flags.0?WebDocument 
receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string 
= MessageMedia;
+messageMediaInvoice#f6a548d3 flags:# shipping_address_requested:flags.1?true 
test:flags.3?true title:string description:string photo:flags.0?WebDocument 
receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string 
extended_media:flags.4?MessageExtendedMedia = MessageMedia;
 messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int 
period:int proximity_notification_radius:flags.1?int = MessageMedia;
 messageMediaPoll#4bd6e798 poll:Poll results:PollResults = MessageMedia;
 messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia;
@@ -192,6 +192,8 @@
 messageActionWebViewDataSentMe#47dd8079 text:string data:string = 
MessageAction;
 messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction;
 messageActionGiftPremium#aba0f5c6 currency:string amount:long months:int = 
MessageAction;
+messageActionTopicCreate#d999256 flags:# title:string icon_color:int 
icon_emoji_id:flags.0?long = MessageAction;
+messageActionTopicEdit#b18a431c flags:# title:flags.0?string 
icon_emoji_id:flags.1?long closed:flags.2?Bool = MessageAction;
 
 dialog#a8edd0f5 flags:# pinned:flags.2?true unread_mark:flags.3?true peer:Peer 
top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int 
unread_mentions_count:int unread_reactions_count:int 
notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage 
folder_id:flags.4?int = Dialog;
 dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer 
top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int 
unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog;
@@ -220,6 +222,7 @@
 inputNotifyUsers#193b4417 = InputNotifyPeer;
 inputNotifyChats#4a95e84e = InputNotifyPeer;
 inputNotifyBroadcasts#b1db7c7e = InputNotifyPeer;
+inputNotifyForumTopic#5c467992 peer:InputPeer top_msg_id:int = InputNotifyPeer;
 
 inputPeerNotifySettings#df1f002b flags:# show_previews:flags.0?Bool 
silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?NotificationSound = 
InputPeerNotifySettings;
 
@@ -263,7 +266,7 @@
 
 messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> 
users:Vector<User> = messages.Messages;
 messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int 
next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> 
chats:Vector<Chat> users:Vector<User> = messages.Messages;
-messages.channelMessages#64479808 flags:# inexact:flags.1?true pts:int 
count:int offset_id_offset:flags.2?int messages:Vector<Message> 
chats:Vector<Chat> users:Vector<User> = messages.Messages;
+messages.channelMessages#c776ba4e flags:# inexact:flags.1?true pts:int 
count:int offset_id_offset:flags.2?int messages:Vector<Message> 
topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = 
messages.Messages;
 messages.messagesNotModified#74535f21 count:int = messages.Messages;
 
 messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
@@ -298,7 +301,7 @@
 updateChatUserTyping#83487af0 chat_id:long from_id:Peer 
action:SendMessageAction = Update;
 updateChatParticipants#7761198 participants:ChatParticipants = Update;
 updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update;
-updateUserName#c3f202e0 user_id:long first_name:string last_name:string 
username:string = Update;
+updateUserName#a7848924 user_id:long first_name:string last_name:string 
usernames:Vector<Username> = Update;
 updateUserPhoto#f227868c user_id:long date:int photo:UserProfilePhoto 
previous:Bool = Update;
 updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update;
 updateEncryptedChatTyping#1710f156 chat_id:int = Update;
@@ -324,7 +327,7 @@
 updateChatParticipantAdmin#d7ca61a2 chat_id:long user_id:long is_admin:Bool 
version:int = Update;
 updateNewStickerSet#688a30aa stickerset:messages.StickerSet = Update;
 updateStickerSetsOrder#bb2d201 flags:# masks:flags.0?true emojis:flags.1?true 
order:Vector<long> = Update;
-updateStickerSets#43ae3dec = Update;
+updateStickerSets#31c24808 flags:# masks:flags.0?true emojis:flags.1?true = 
Update;
 updateSavedGifs#9375341e = Update;
 updateBotInlineQuery#496f379c flags:# query_id:long user_id:long query:string 
geo:flags.0?GeoPoint peer_type:flags.1?InlineQueryPeerType offset:string = 
Update;
 updateBotInlineSend#12f12a07 flags:# user_id:long query:string 
geo:flags.0?GeoPoint id:string msg_id:flags.1?InputBotInlineMessageID = Update;
@@ -333,7 +336,7 @@
 updateEditMessage#e40370a3 message:Message pts:int pts_count:int = Update;
 updateInlineBotCallbackQuery#691e9052 flags:# query_id:long user_id:long 
msg_id:InputBotInlineMessageID chat_instance:long data:flags.0?bytes 
game_short_name:flags.1?string = Update;
 updateReadChannelOutbox#b75f99a9 channel_id:long max_id:int = Update;
-updateDraftMessage#ee2bb969 peer:Peer draft:DraftMessage = Update;
+updateDraftMessage#1b49ec6d flags:# peer:Peer top_msg_id:flags.0?int 
draft:DraftMessage = Update;
 updateReadFeaturedStickers#571d2742 = Update;
 updateRecentStickers#9a422c20 = Update;
 updateConfig#a229dd06 = Update;
@@ -349,7 +352,7 @@
 updateLangPackTooLong#46560264 lang_code:string = Update;
 updateLangPack#56022f4d difference:LangPackDifference = Update;
 updateFavedStickers#e511996d = Update;
-updateChannelReadMessagesContents#44bdd535 channel_id:long 
messages:Vector<int> = Update;
+updateChannelReadMessagesContents#ea29055d flags:# channel_id:long 
top_msg_id:flags.0?int messages:Vector<int> = Update;
 updateContactsReset#7084a7be = Update;
 updateChannelAvailableMessages#b23fc698 channel_id:long available_min_id:int = 
Update;
 updateDialogUnreadMark#e16459c3 flags:# unread:flags.0?true peer:DialogPeer = 
Update;
@@ -386,13 +389,20 @@
 updateBotCommands#4d712f2e peer:Peer bot_id:long commands:Vector<BotCommand> = 
Update;
 updatePendingJoinRequests#7063c3db peer:Peer requests_pending:int 
recent_requesters:Vector<long> = Update;
 updateBotChatInviteRequester#11dfa986 peer:Peer date:int user_id:long 
about:string invite:ExportedChatInvite qts:int = Update;
-updateMessageReactions#154798c3 peer:Peer msg_id:int 
reactions:MessageReactions = Update;
+updateMessageReactions#5e1b3cb8 flags:# peer:Peer msg_id:int 
top_msg_id:flags.0?int reactions:MessageReactions = Update;
 updateAttachMenuBots#17b7a20b = Update;
 updateWebViewResultSent#1592b79d query_id:long = Update;
 updateBotMenuButton#14b85813 bot_id:long button:BotMenuButton = Update;
 updateSavedRingtones#74d8be99 = Update;
 updateTranscribedAudio#84cd5a flags:# pending:flags.0?true peer:Peer 
msg_id:int transcription_id:long text:string = Update;
 updateReadFeaturedEmojiStickers#fb4c496c = Update;
+updateUserEmojiStatus#28373599 user_id:long emoji_status:EmojiStatus = Update;
+updateRecentEmojiStatuses#30f443db = Update;
+updateRecentReactions#6f7863f4 = Update;
+updateMoveStickerSetToTop#86fccf85 flags:# masks:flags.0?true 
emojis:flags.1?true stickerset:long = Update;
+updateMessageExtendedMedia#5a73a98c peer:Peer msg_id:int 
extended_media:MessageExtendedMedia = Update;
+updateChannelPinnedTopic#192efbe3 flags:# pinned:flags.0?true channel_id:long 
topic_id:int = Update;
+updateChannelPinnedTopics#fe198602 flags:# channel_id:long 
order:flags.0?Vector<int> = Update;
 
 updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = 
updates.State;
 
@@ -419,7 +429,7 @@
 
 dcOption#18b7a10d flags:# ipv6:flags.0?true media_only:flags.1?true 
tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true 
this_port_only:flags.5?true id:int ip_address:string port:int 
secret:flags.10?bytes = DcOption;
 
-config#330b4067 flags:# phonecalls_enabled:flags.1?true 
default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true 
ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true 
blocked_mode:flags.8?true pfs_enabled:flags.13?true 
force_try_ipv6:flags.14?true date:int expires:int test_mode:Bool this_dc:int 
dc_options:Vector<DcOption> dc_txt_domain_name:string chat_size_max:int 
megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int 
offline_blur_timeout_ms:int offline_idle_timeout_ms:int 
online_cloud_timeout_ms:int notify_cloud_delay_ms:int 
notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int 
saved_gifs_limit:int edit_time_limit:int revoke_time_limit:int 
revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int 
stickers_faved_limit:int channels_read_media_period:int 
tmp_sessions:flags.0?int pinned_dialogs_count_max:int 
pinned_infolder_count_max:int call_receive_timeout_ms:int 
call_ring_timeout_ms:int call_connect_timeout
 _ms:int call_packet_timeout_ms:int me_url_prefix:string 
autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string 
venue_search_username:flags.10?string img_search_username:flags.11?string 
static_maps_provider:flags.12?string caption_length_max:int 
message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string 
lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int = Config;
+config#232566ac flags:# phonecalls_enabled:flags.1?true 
default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true 
ignore_phone_entities:flags.5?true revoke_pm_inbox:flags.6?true 
blocked_mode:flags.8?true pfs_enabled:flags.13?true 
force_try_ipv6:flags.14?true date:int expires:int test_mode:Bool this_dc:int 
dc_options:Vector<DcOption> dc_txt_domain_name:string chat_size_max:int 
megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int 
offline_blur_timeout_ms:int offline_idle_timeout_ms:int 
online_cloud_timeout_ms:int notify_cloud_delay_ms:int 
notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int 
saved_gifs_limit:int edit_time_limit:int revoke_time_limit:int 
revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int 
stickers_faved_limit:int channels_read_media_period:int 
tmp_sessions:flags.0?int pinned_dialogs_count_max:int 
pinned_infolder_count_max:int call_receive_timeout_ms:int 
call_ring_timeout_ms:int call_connect_timeout
 _ms:int call_packet_timeout_ms:int me_url_prefix:string 
autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string 
venue_search_username:flags.10?string img_search_username:flags.11?string 
static_maps_provider:flags.12?string caption_length_max:int 
message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string 
lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int 
reactions_default:flags.15?Reaction = Config;
 
 nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc;
 
@@ -465,6 +475,7 @@
 notifyUsers#b4c83b4c = NotifyPeer;
 notifyChats#c007cec3 = NotifyPeer;
 notifyBroadcasts#d612e8ef = NotifyPeer;
+notifyForumTopic#226e6308 peer:Peer top_msg_id:int = NotifyPeer;
 
 sendMessageTypingAction#16bf744e = SendMessageAction;
 sendMessageCancelAction#fd5ec8f5 = SendMessageAction;
@@ -557,7 +568,7 @@
 
 account.authorizations#4bff8ea0 authorization_ttl_days:int 
authorizations:Vector<Authorization> = account.Authorizations;
 
-account.password#185b184f flags:# has_recovery:flags.0?true 
has_secure_values:flags.1?true has_password:flags.2?true 
current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long 
hint:flags.3?string email_unconfirmed_pattern:flags.4?string 
new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo 
secure_random:bytes pending_reset_date:flags.5?int = account.Password;
+account.password#957b50fb flags:# has_recovery:flags.0?true 
has_secure_values:flags.1?true has_password:flags.2?true 
current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long 
hint:flags.3?string email_unconfirmed_pattern:flags.4?string 
new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo 
secure_random:bytes pending_reset_date:flags.5?int 
login_email_pattern:flags.6?string = account.Password;
 
 account.passwordSettings#9a5c33e5 flags:# email:flags.0?string 
secure_settings:flags.1?SecureSecretSettings = account.PasswordSettings;
 
@@ -581,10 +592,13 @@
 inputStickerSetDice#e67f520e emoticon:string = InputStickerSet;
 inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet;
 inputStickerSetPremiumGifts#c88b3b02 = InputStickerSet;
+inputStickerSetEmojiGenericAnimations#4c4d4ce = InputStickerSet;
+inputStickerSetEmojiDefaultStatuses#29d0f5ee = InputStickerSet;
+inputStickerSetEmojiDefaultTopicIcons#44c1f8e9 = InputStickerSet;
 
 stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true 
masks:flags.3?true animated:flags.5?true videos:flags.6?true 
emojis:flags.7?true installed_date:flags.0?int id:long access_hash:long 
title:string short_name:string thumbs:flags.4?Vector<PhotoSize> 
thumb_dc_id:flags.4?int thumb_version:flags.4?int 
thumb_document_id:flags.8?long count:int hash:int = StickerSet;
 
-messages.stickerSet#b60a24a6 set:StickerSet packs:Vector<StickerPack> 
documents:Vector<Document> = messages.StickerSet;
+messages.stickerSet#6e153f16 set:StickerSet packs:Vector<StickerPack> 
keywords:Vector<StickerKeyword> documents:Vector<Document> = 
messages.StickerSet;
 messages.stickerSetNotModified#d3f924eb = messages.StickerSet;
 
 botCommand#c27ac8c7 command:string description:string = BotCommand;
@@ -716,6 +730,8 @@
 auth.sentCodeTypeCall#5353e5a7 length:int = auth.SentCodeType;
 auth.sentCodeTypeFlashCall#ab03c6d9 pattern:string = auth.SentCodeType;
 auth.sentCodeTypeMissedCall#82006484 prefix:string length:int = 
auth.SentCodeType;
+auth.sentCodeTypeEmailCode#5a159841 flags:# apple_signin_allowed:flags.0?true 
google_signin_allowed:flags.1?true email_pattern:string length:int 
next_phone_login_date:flags.2?int = auth.SentCodeType;
+auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# 
apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = 
auth.SentCodeType;
 
 messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true 
has_url:flags.3?true native_ui:flags.4?true message:flags.0?string 
url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
 
@@ -761,7 +777,7 @@
 
 stickerSetCovered#6410a5d2 set:StickerSet cover:Document = StickerSetCovered;
 stickerSetMultiCovered#3407e51b set:StickerSet covers:Vector<Document> = 
StickerSetCovered;
-stickerSetFullCovered#1aed5ee5 set:StickerSet packs:Vector<StickerPack> 
documents:Vector<Document> = StickerSetCovered;
+stickerSetFullCovered#40d13c0e set:StickerSet packs:Vector<StickerPack> 
keywords:Vector<StickerKeyword> documents:Vector<Document> = StickerSetCovered;
 
 maskCoords#aed6dbb2 n:int x:double y:double zoom:double = MaskCoords;
 
@@ -850,6 +866,7 @@
 
 inputWebFileLocation#c239d686 url:string access_hash:long = 
InputWebFileLocation;
 inputWebFileGeoPointLocation#9f2221c9 geo_point:InputGeoPoint access_hash:long 
w:int h:int zoom:int scale:int = InputWebFileLocation;
+inputWebFileAudioAlbumThumbLocation#f46fe924 flags:# small:flags.2?true 
document:flags.0?InputDocument title:flags.1?string performer:flags.1?string = 
InputWebFileLocation;
 
 upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType 
mtime:int bytes:bytes = upload.WebFile;
 
@@ -941,13 +958,19 @@
 channelAdminLogEventActionParticipantJoinByRequest#afb6144a 
invite:ExportedChatInvite approved_by:long = ChannelAdminLogEventAction;
 channelAdminLogEventActionToggleNoForwards#cb2ac766 new_value:Bool = 
ChannelAdminLogEventAction;
 channelAdminLogEventActionSendMessage#278f2868 message:Message = 
ChannelAdminLogEventAction;
-channelAdminLogEventActionChangeAvailableReactions#9cf7f76a 
prev_value:Vector<string> new_value:Vector<string> = ChannelAdminLogEventAction;
+channelAdminLogEventActionChangeAvailableReactions#be4e0ef8 
prev_value:ChatReactions new_value:ChatReactions = ChannelAdminLogEventAction;
+channelAdminLogEventActionChangeUsernames#f04fb3a9 prev_value:Vector<string> 
new_value:Vector<string> = ChannelAdminLogEventAction;
+channelAdminLogEventActionToggleForum#2cc6383 new_value:Bool = 
ChannelAdminLogEventAction;
+channelAdminLogEventActionCreateTopic#58707d28 topic:ForumTopic = 
ChannelAdminLogEventAction;
+channelAdminLogEventActionEditTopic#f06fe208 prev_topic:ForumTopic 
new_topic:ForumTopic = ChannelAdminLogEventAction;
+channelAdminLogEventActionDeleteTopic#ae168909 topic:ForumTopic = 
ChannelAdminLogEventAction;
+channelAdminLogEventActionPinTopic#5d8d353b flags:# 
prev_topic:flags.0?ForumTopic new_topic:flags.1?ForumTopic = 
ChannelAdminLogEventAction;
 
 channelAdminLogEvent#1fad68cd id:long date:int user_id:long 
action:ChannelAdminLogEventAction = ChannelAdminLogEvent;
 
 channels.adminLogResults#ed8af74d events:Vector<ChannelAdminLogEvent> 
chats:Vector<Chat> users:Vector<User> = channels.AdminLogResults;
 
-channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true 
leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true 
kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true 
info:flags.9?true settings:flags.10?true pinned:flags.11?true 
edit:flags.12?true delete:flags.13?true group_call:flags.14?true 
invites:flags.15?true send:flags.16?true = ChannelAdminLogEventsFilter;
+channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true 
leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true 
kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true 
info:flags.9?true settings:flags.10?true pinned:flags.11?true 
edit:flags.12?true delete:flags.13?true group_call:flags.14?true 
invites:flags.15?true send:flags.16?true forums:flags.17?true = 
ChannelAdminLogEventsFilter;
 
 popularContact#5ce14175 client_id:long importers:int = PopularContact;
 
@@ -1105,9 +1128,9 @@
 
 statsURL#47a971e0 url:string = StatsURL;
 
-chatAdminRights#5fb224d5 flags:# change_info:flags.0?true 
post_messages:flags.1?true edit_messages:flags.2?true 
delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true 
pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true 
manage_call:flags.11?true other:flags.12?true = ChatAdminRights;
+chatAdminRights#5fb224d5 flags:# change_info:flags.0?true 
post_messages:flags.1?true edit_messages:flags.2?true 
delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true 
pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true 
manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true = 
ChatAdminRights;
 
-chatBannedRights#9f120418 flags:# view_messages:flags.0?true 
send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true 
send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true 
embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true 
invite_users:flags.15?true pin_messages:flags.17?true until_date:int = 
ChatBannedRights;
+chatBannedRights#9f120418 flags:# view_messages:flags.0?true 
send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true 
send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true 
embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true 
invite_users:flags.15?true pin_messages:flags.17?true 
manage_topics:flags.18?true until_date:int = ChatBannedRights;
 
 inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper;
 inputWallPaperSlug#72091c80 slug:string = InputWallPaper;
@@ -1238,7 +1261,7 @@
 
 messages.discussionMessage#a6341782 flags:# messages:Vector<Message> 
max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int 
unread_count:int chats:Vector<Chat> users:Vector<User> = 
messages.DiscussionMessage;
 
-messageReplyHeader#a6d57763 flags:# reply_to_scheduled:flags.2?true 
reply_to_msg_id:int reply_to_peer_id:flags.0?Peer reply_to_top_id:flags.1?int = 
MessageReplyHeader;
+messageReplyHeader#a6d57763 flags:# reply_to_scheduled:flags.2?true 
forum_topic:flags.3?true reply_to_msg_id:int reply_to_peer_id:flags.0?Peer 
reply_to_top_id:flags.1?int = MessageReplyHeader;
 
 messageReplies#83d60fc2 flags:# comments:flags.0?true replies:int 
replies_pts:int recent_repliers:flags.1?Vector<Peer> channel_id:flags.0?long 
max_id:flags.2?int read_max_id:flags.3?int = MessageReplies;
 
@@ -1306,9 +1329,10 @@
 account.resetPasswordRequestedWait#e9effc7d until_date:int = 
account.ResetPasswordResult;
 account.resetPasswordOk#e926d63e = account.ResetPasswordResult;
 
-sponsoredMessage#3a836df8 flags:# recommended:flags.5?true random_id:bytes 
from_id:flags.3?Peer chat_invite:flags.4?ChatInvite 
chat_invite_hash:flags.4?string channel_post:flags.2?int 
start_param:flags.0?string message:string 
entities:flags.1?Vector<MessageEntity> = SponsoredMessage;
+sponsoredMessage#3a836df8 flags:# recommended:flags.5?true 
show_peer_photo:flags.6?true random_id:bytes from_id:flags.3?Peer 
chat_invite:flags.4?ChatInvite chat_invite_hash:flags.4?string 
channel_post:flags.2?int start_param:flags.0?string message:string 
entities:flags.1?Vector<MessageEntity> = SponsoredMessage;
 
-messages.sponsoredMessages#65a4c7d5 messages:Vector<SponsoredMessage> 
chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages;
+messages.sponsoredMessages#c9ee1d87 flags:# posts_between:flags.0?int 
messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = 
messages.SponsoredMessages;
+messages.sponsoredMessagesEmpty#1839490f = messages.SponsoredMessages;
 
 searchResultsCalendarPeriod#c9b0539f date:int min_msg_id:int max_msg_id:int 
count:int = SearchResultsCalendarPeriod;
 
@@ -1318,7 +1342,7 @@
 
 messages.searchResultsPositions#53b22baf count:int 
positions:Vector<SearchResultsPosition> = messages.SearchResultsPositions;
 
-channels.sendAsPeers#8356cda9 peers:Vector<Peer> chats:Vector<Chat> 
users:Vector<User> = channels.SendAsPeers;
+channels.sendAsPeers#f496b0c6 peers:Vector<SendAsPeer> chats:Vector<Chat> 
users:Vector<User> = channels.SendAsPeers;
 
 users.userFull#3b6d152e full_user:UserFull chats:Vector<Chat> 
users:Vector<User> = users.UserFull;
 
@@ -1326,7 +1350,7 @@
 
 auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = 
auth.LoggedOut;
 
-reactionCount#6fb250d1 flags:# chosen:flags.0?true reaction:string count:int = 
ReactionCount;
+reactionCount#a3d1cb80 flags:# chosen_order:flags.0?int reaction:Reaction 
count:int = ReactionCount;
 
 messageReactions#4f2b9479 flags:# min:flags.0?true can_see_list:flags.2?true 
results:Vector<ReactionCount> 
recent_reactions:flags.1?Vector<MessagePeerReaction> = MessageReactions;
 
@@ -1340,7 +1364,7 @@
 messages.translateNoResult#67ca4737 = messages.TranslatedText;
 messages.translateResultText#a214f7d0 text:string = messages.TranslatedText;
 
-messagePeerReaction#51b67eff flags:# big:flags.0?true unread:flags.1?true 
peer_id:Peer reaction:string = MessagePeerReaction;
+messagePeerReaction#b156fe9c flags:# big:flags.0?true unread:flags.1?true 
peer_id:Peer reaction:Reaction = MessagePeerReaction;
 
 groupCallStreamChannel#80eb48af channel:int scale:int last_timestamp_ms:long = 
GroupCallStreamChannel;
 
@@ -1393,7 +1417,7 @@
 
 messages.transcribedAudio#93752c52 flags:# pending:flags.0?true 
transcription_id:long text:string = messages.TranscribedAudio;
 
-help.premiumPromo#8a4f3c29 status_text:string 
status_entities:Vector<MessageEntity> video_sections:Vector<string> 
videos:Vector<Document> currency:string monthly_amount:long users:Vector<User> 
= help.PremiumPromo;
+help.premiumPromo#5334759c status_text:string 
status_entities:Vector<MessageEntity> video_sections:Vector<string> 
videos:Vector<Document> period_options:Vector<PremiumSubscriptionOption> 
users:Vector<User> = help.PremiumPromo;
 
 inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true = 
InputStorePaymentPurpose;
 inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string 
amount:long = InputStorePaymentPurpose;
@@ -1402,6 +1426,51 @@
 
 paymentFormMethod#88f8f21b url:string title:string = PaymentFormMethod;
 
+emojiStatusEmpty#2de11aae = EmojiStatus;
+emojiStatus#929b619d document_id:long = EmojiStatus;
+emojiStatusUntil#fa30a8c7 document_id:long until:int = EmojiStatus;
+
+account.emojiStatusesNotModified#d08ce645 = account.EmojiStatuses;
+account.emojiStatuses#90c467d1 hash:long statuses:Vector<EmojiStatus> = 
account.EmojiStatuses;
+
+reactionEmpty#79f5d419 = Reaction;
+reactionEmoji#1b2286b8 emoticon:string = Reaction;
+reactionCustomEmoji#8935fc73 document_id:long = Reaction;
+
+chatReactionsNone#eafc32bc = ChatReactions;
+chatReactionsAll#52928bca flags:# allow_custom:flags.0?true = ChatReactions;
+chatReactionsSome#661d4037 reactions:Vector<Reaction> = ChatReactions;
+
+messages.reactionsNotModified#b06fdbdf = messages.Reactions;
+messages.reactions#eafdf716 hash:long reactions:Vector<Reaction> = 
messages.Reactions;
+
+emailVerifyPurposeLoginSetup#4345be73 phone_number:string 
phone_code_hash:string = EmailVerifyPurpose;
+emailVerifyPurposeLoginChange#527d22eb = EmailVerifyPurpose;
+emailVerifyPurposePassport#bbf51685 = EmailVerifyPurpose;
+
+emailVerificationCode#922e55a9 code:string = EmailVerification;
+emailVerificationGoogle#db909ec2 token:string = EmailVerification;
+emailVerificationApple#96d074fd token:string = EmailVerification;
+
+account.emailVerified#2b96cd1b email:string = account.EmailVerified;
+account.emailVerifiedLogin#e1bb0d61 email:string sent_code:auth.SentCode = 
account.EmailVerified;
+
+premiumSubscriptionOption#b6f11ebe flags:# current:flags.1?true 
can_purchase_upgrade:flags.2?true months:int currency:string amount:long 
bot_url:string store_product:flags.0?string = PremiumSubscriptionOption;
+
+sendAsPeer#b81c7034 flags:# premium_required:flags.0?true peer:Peer = 
SendAsPeer;
+
+messageExtendedMediaPreview#ad628cc8 flags:# w:flags.0?int h:flags.0?int 
thumb:flags.1?PhotoSize video_duration:flags.2?int = MessageExtendedMedia;
+messageExtendedMedia#ee479c64 media:MessageMedia = MessageExtendedMedia;
+
+stickerKeyword#fcfeb29c document_id:long keyword:Vector<string> = 
StickerKeyword;
+
+username#b4073647 flags:# editable:flags.0?true active:flags.1?true 
username:string = Username;
+
+forumTopicDeleted#23f109b id:int = ForumTopic;
+forumTopic#71701da9 flags:# my:flags.1?true closed:flags.2?true 
pinned:flags.3?true short:flags.5?true id:int date:int title:string 
icon_color:int icon_emoji_id:flags.0?long top_message:int read_inbox_max_id:int 
read_outbox_max_id:int unread_count:int unread_mentions_count:int 
unread_reactions_count:int from_id:Peer notify_settings:PeerNotifySettings 
draft:flags.4?DraftMessage = ForumTopic;
+
+messages.forumTopics#367617d3 flags:# order_by_create_date:flags.0?true 
count:int topics:Vector<ForumTopic> messages:Vector<Message> chats:Vector<Chat> 
users:Vector<User> pts:int = messages.ForumTopics;
+
 ---functions---
 
 invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
@@ -1414,7 +1483,7 @@
 
 auth.sendCode#a677244f phone_number:string api_id:int api_hash:string 
settings:CodeSettings = auth.SentCode;
 auth.signUp#80eee427 phone_number:string phone_code_hash:string 
first_name:string last_name:string = auth.Authorization;
-auth.signIn#bcd51581 phone_number:string phone_code_hash:string 
phone_code:string = auth.Authorization;
+auth.signIn#8d52a951 flags:# phone_number:string phone_code_hash:string 
phone_code:flags.0?string email_verification:flags.1?EmailVerification = 
auth.Authorization;
 auth.logOut#3e72ba19 = auth.LoggedOut;
 auth.resetAuthorizations#9fab0d1a = Bool;
 auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization;
@@ -1470,8 +1539,8 @@
 account.acceptAuthorization#f3ed4c73 bot_id:long scope:string 
public_key:string value_hashes:Vector<SecureValueHash> 
credentials:SecureCredentialsEncrypted = Bool;
 account.sendVerifyPhoneCode#a5a356f9 phone_number:string settings:CodeSettings 
= auth.SentCode;
 account.verifyPhone#4dd3a7f6 phone_number:string phone_code_hash:string 
phone_code:string = Bool;
-account.sendVerifyEmailCode#7011509f email:string = account.SentEmailCode;
-account.verifyEmail#ecba39db email:string code:string = Bool;
+account.sendVerifyEmailCode#98e037bb purpose:EmailVerifyPurpose email:string = 
account.SentEmailCode;
+account.verifyEmail#32da4cf purpose:EmailVerifyPurpose 
verification:EmailVerification = account.EmailVerified;
 account.initTakeoutSession#8ef3eab0 flags:# contacts:flags.0?true 
message_users:flags.1?true message_chats:flags.2?true 
message_megagroups:flags.3?true message_channels:flags.4?true 
files:flags.5?true file_max_size:flags.5?long = account.Takeout;
 account.finishTakeoutSession#1d2652ee flags:# success:flags.0?true = Bool;
 account.confirmPasswordEmail#8fdf1920 code:string = Bool;
@@ -1492,7 +1561,7 @@
 account.updateTheme#2bf40ccc flags:# format:string theme:InputTheme 
slug:flags.0?string title:flags.1?string document:flags.2?InputDocument 
settings:flags.3?Vector<InputThemeSettings> = Theme;
 account.saveTheme#f257106c theme:InputTheme unsave:Bool = Bool;
 account.installTheme#c727bb3b flags:# dark:flags.0?true 
theme:flags.1?InputTheme format:flags.2?string base_theme:flags.3?BaseTheme = 
Bool;
-account.getTheme#8d9d742b format:string theme:InputTheme document_id:long = 
Theme;
+account.getTheme#3a5869ec format:string theme:InputTheme = Theme;
 account.getThemes#7206e458 format:string hash:long = account.Themes;
 account.setContentSettings#b574b16b flags:# sensitive_enabled:flags.0?true = 
Bool;
 account.getContentSettings#8b9b4dae = account.ContentSettings;
@@ -1508,6 +1577,12 @@
 account.getSavedRingtones#e1902288 hash:long = account.SavedRingtones;
 account.saveRingtone#3dea5b03 id:InputDocument unsave:Bool = 
account.SavedRingtone;
 account.uploadRingtone#831a83a2 file:InputFile file_name:string 
mime_type:string = Document;
+account.updateEmojiStatus#fbd3de6b emoji_status:EmojiStatus = Bool;
+account.getDefaultEmojiStatuses#d6753386 hash:long = account.EmojiStatuses;
+account.getRecentEmojiStatuses#f578105 hash:long = account.EmojiStatuses;
+account.clearRecentEmojiStatuses#18201aae = Bool;
+account.reorderUsernames#ef500eab order:Vector<string> = Bool;
+account.toggleUsername#58d6b376 username:string active:Bool = Bool;
 
 users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>;
 users.getFullUser#b60f5918 id:InputUser = users.UserFull;
@@ -1544,9 +1619,9 @@
 messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector<int> = 
messages.AffectedMessages;
 messages.receivedMessages#5a954c0 max_id:int = Vector<ReceivedNotifyMessage>;
 messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int 
action:SendMessageAction = Bool;
-messages.sendMessage#d9d75a4 flags:# no_webpage:flags.1?true 
silent:flags.5?true background:flags.6?true clear_draft:flags.7?true 
noforwards:flags.14?true peer:InputPeer reply_to_msg_id:flags.0?int 
message:string random_id:long reply_markup:flags.2?ReplyMarkup 
entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
-messages.sendMedia#e25ff8e0 flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true 
peer:InputPeer reply_to_msg_id:flags.0?int media:InputMedia message:string 
random_id:long reply_markup:flags.2?ReplyMarkup 
entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
-messages.forwardMessages#cc30290b flags:# silent:flags.5?true 
background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true 
drop_media_captions:flags.12?true noforwards:flags.14?true from_peer:InputPeer 
id:Vector<int> random_id:Vector<long> to_peer:InputPeer 
schedule_date:flags.10?int send_as:flags.13?InputPeer = Updates;
+messages.sendMessage#1cc20387 flags:# no_webpage:flags.1?true 
silent:flags.5?true background:flags.6?true clear_draft:flags.7?true 
noforwards:flags.14?true update_stickersets_order:flags.15?true peer:InputPeer 
reply_to_msg_id:flags.0?int top_msg_id:flags.9?int message:string 
random_id:long reply_markup:flags.2?ReplyMarkup 
entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
+messages.sendMedia#7547c966 flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true 
update_stickersets_order:flags.15?true peer:InputPeer 
reply_to_msg_id:flags.0?int top_msg_id:flags.9?int media:InputMedia 
message:string random_id:long reply_markup:flags.2?ReplyMarkup 
entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
+messages.forwardMessages#c661bbc4 flags:# silent:flags.5?true 
background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true 
drop_media_captions:flags.12?true noforwards:flags.14?true from_peer:InputPeer 
id:Vector<int> random_id:Vector<long> to_peer:InputPeer top_msg_id:flags.9?int 
schedule_date:flags.10?int send_as:flags.13?InputPeer = Updates;
 messages.reportSpam#cf1592db peer:InputPeer = Bool;
 messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings;
 messages.report#8953ab4e peer:InputPeer id:Vector<int> reason:ReportReason 
message:string = Bool;
@@ -1589,14 +1664,14 @@
 messages.saveGif#327a30cb id:InputDocument unsave:Bool = Bool;
 messages.getInlineBotResults#514e999d flags:# bot:InputUser peer:InputPeer 
geo_point:flags.0?InputGeoPoint query:string offset:string = 
messages.BotResults;
 messages.setInlineBotResults#eb5ea206 flags:# gallery:flags.0?true 
private:flags.1?true query_id:long results:Vector<InputBotInlineResult> 
cache_time:int next_offset:flags.2?string switch_pm:flags.3?InlineBotSwitchPM = 
Bool;
-messages.sendInlineBotResult#7aa11297 flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true 
peer:InputPeer reply_to_msg_id:flags.0?int random_id:long query_id:long 
id:string schedule_date:flags.10?int send_as:flags.13?InputPeer = Updates;
+messages.sendInlineBotResult#d3fbdccb flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true 
peer:InputPeer reply_to_msg_id:flags.0?int top_msg_id:flags.9?int 
random_id:long query_id:long id:string schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
 messages.getMessageEditData#fda68d36 peer:InputPeer id:int = 
messages.MessageEditData;
 messages.editMessage#48f71778 flags:# no_webpage:flags.1?true peer:InputPeer 
id:int message:flags.11?string media:flags.14?InputMedia 
reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> 
schedule_date:flags.15?int = Updates;
 messages.editInlineBotMessage#83557dba flags:# no_webpage:flags.1?true 
id:InputBotInlineMessageID message:flags.11?string media:flags.14?InputMedia 
reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> = Bool;
 messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true 
peer:InputPeer msg_id:int data:flags.0?bytes 
password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer;
 messages.setBotCallbackAnswer#d58f130a flags:# alert:flags.1?true 
query_id:long message:flags.0?string url:flags.2?string cache_time:int = Bool;
 messages.getPeerDialogs#e470bcfd peers:Vector<InputDialogPeer> = 
messages.PeerDialogs;
-messages.saveDraft#bc39e14b flags:# no_webpage:flags.1?true 
reply_to_msg_id:flags.0?int peer:InputPeer message:string 
entities:flags.3?Vector<MessageEntity> = Bool;
+messages.saveDraft#b4331e3f flags:# no_webpage:flags.1?true 
reply_to_msg_id:flags.0?int top_msg_id:flags.2?int peer:InputPeer 
message:string entities:flags.3?Vector<MessageEntity> = Bool;
 messages.getAllDrafts#6a3f8d65 = Updates;
 messages.getFeaturedStickers#64780b14 hash:long = messages.FeaturedStickers;
 messages.readFeaturedStickers#5b118126 id:Vector<long> = Bool;
@@ -1622,10 +1697,10 @@
 messages.sendScreenshotNotification#c97df020 peer:InputPeer 
reply_to_msg_id:int random_id:long = Updates;
 messages.getFavedStickers#4f1aaa9 hash:long = messages.FavedStickers;
 messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool;
-messages.getUnreadMentions#46578472 peer:InputPeer offset_id:int 
add_offset:int limit:int max_id:int min_id:int = messages.Messages;
-messages.readMentions#f0189d3 peer:InputPeer = messages.AffectedHistory;
+messages.getUnreadMentions#f107e790 flags:# peer:InputPeer 
top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int 
min_id:int = messages.Messages;
+messages.readMentions#36e5bf4d flags:# peer:InputPeer top_msg_id:flags.0?int = 
messages.AffectedHistory;
 messages.getRecentLocations#702a40e0 peer:InputPeer limit:int hash:long = 
messages.Messages;
-messages.sendMultiMedia#f803138f flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true 
peer:InputPeer reply_to_msg_id:flags.0?int multi_media:Vector<InputSingleMedia> 
schedule_date:flags.10?int send_as:flags.13?InputPeer = Updates;
+messages.sendMultiMedia#b6f11a1c flags:# silent:flags.5?true 
background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true 
update_stickersets_order:flags.15?true peer:InputPeer 
reply_to_msg_id:flags.0?int top_msg_id:flags.9?int 
multi_media:Vector<InputSingleMedia> schedule_date:flags.10?int 
send_as:flags.13?InputPeer = Updates;
 messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat 
file:InputEncryptedFile = EncryptedFile;
 messages.searchStickerSets#35705b8a flags:# exclude_featured:flags.0?true 
q:string hash:long = messages.FoundStickerSets;
 messages.getSplitRanges#1cff7e08 = Vector<MessageRange>;
@@ -1642,7 +1717,7 @@
 messages.getEmojiKeywordsDifference#1508b6af lang_code:string from_version:int 
= EmojiKeywordsDifference;
 messages.getEmojiKeywordsLanguages#4e9963b2 lang_codes:Vector<string> = 
Vector<EmojiLanguage>;
 messages.getEmojiURL#d5b10c26 lang_code:string = EmojiURL;
-messages.getSearchCounters#732eef00 peer:InputPeer 
filters:Vector<MessagesFilter> = Vector<messages.SearchCounter>;
+messages.getSearchCounters#ae7cc1 flags:# peer:InputPeer 
top_msg_id:flags.0?int filters:Vector<MessagesFilter> = 
Vector<messages.SearchCounter>;
 messages.requestUrlAuth#198fb446 flags:# peer:flags.1?InputPeer 
msg_id:flags.1?int button_id:flags.1?int url:flags.2?string = UrlAuthResult;
 messages.acceptUrlAuth#b12c7125 flags:# write_allowed:flags.0?true 
peer:flags.1?InputPeer msg_id:flags.1?int button_id:flags.1?int 
url:flags.2?string = UrlAuthResult;
 messages.hidePeerSettingsBar#4facb138 peer:InputPeer = Bool;
@@ -1660,7 +1735,7 @@
 messages.getReplies#22ddd30c peer:InputPeer msg_id:int offset_id:int 
offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = 
messages.Messages;
 messages.getDiscussionMessage#446972fd peer:InputPeer msg_id:int = 
messages.DiscussionMessage;
 messages.readDiscussion#f731a9f4 peer:InputPeer msg_id:int read_max_id:int = 
Bool;
-messages.unpinAllMessages#f025bc8b peer:InputPeer = messages.AffectedHistory;
+messages.unpinAllMessages#ee22b9a8 flags:# peer:InputPeer 
top_msg_id:flags.0?int = messages.AffectedHistory;
 messages.deleteChat#5bd0ee50 chat_id:long = Bool;
 messages.deletePhoneCallHistory#f9cbe409 flags:# revoke:flags.0?true = 
messages.AffectedFoundMessages;
 messages.checkHistoryImport#43fe19f3 import_head:string = 
messages.HistoryImportParsed;
@@ -1684,22 +1759,22 @@
 messages.hideAllChatJoinRequests#e085f4ea flags:# approved:flags.0?true 
peer:InputPeer link:flags.1?string = Updates;
 messages.toggleNoForwards#b11eafa2 peer:InputPeer enabled:Bool = Updates;
 messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool;
-messages.sendReaction#25690ce4 flags:# big:flags.1?true peer:InputPeer 
msg_id:int reaction:flags.0?string = Updates;
+messages.sendReaction#d30d78d4 flags:# big:flags.1?true 
add_to_recent:flags.2?true peer:InputPeer msg_id:int 
reaction:flags.0?Vector<Reaction> = Updates;
 messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector<int> = Updates;
-messages.getMessageReactionsList#e0ee6b77 flags:# peer:InputPeer id:int 
reaction:flags.0?string offset:flags.1?string limit:int = 
messages.MessageReactionsList;
-messages.setChatAvailableReactions#14050ea6 peer:InputPeer 
available_reactions:Vector<string> = Updates;
+messages.getMessageReactionsList#461b3f48 flags:# peer:InputPeer id:int 
reaction:flags.0?Reaction offset:flags.1?string limit:int = 
messages.MessageReactionsList;
+messages.setChatAvailableReactions#feb16771 peer:InputPeer 
available_reactions:ChatReactions = Updates;
 messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions;
-messages.setDefaultReaction#d960c4d4 reaction:string = Bool;
+messages.setDefaultReaction#4f47a016 reaction:Reaction = Bool;
 messages.translateText#24ce6dee flags:# peer:flags.0?InputPeer 
msg_id:flags.0?int text:flags.1?string from_lang:flags.2?string to_lang:string 
= messages.TranslatedText;
-messages.getUnreadReactions#e85bae1a peer:InputPeer offset_id:int 
add_offset:int limit:int max_id:int min_id:int = messages.Messages;
-messages.readReactions#82e251d7 peer:InputPeer = messages.AffectedHistory;
+messages.getUnreadReactions#3223495b flags:# peer:InputPeer 
top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int 
min_id:int = messages.Messages;
+messages.readReactions#54aa7f8e flags:# peer:InputPeer top_msg_id:flags.0?int 
= messages.AffectedHistory;
 messages.searchSentMedia#107e31a0 q:string filter:MessagesFilter limit:int = 
messages.Messages;
 messages.getAttachMenuBots#16fcc2cb hash:long = AttachMenuBots;
 messages.getAttachMenuBot#77216192 bot:InputUser = AttachMenuBotsBot;
 messages.toggleBotInAttachMenu#1aee33af bot:InputUser enabled:Bool = Bool;
-messages.requestWebView#91b15831 flags:# from_bot_menu:flags.4?true 
silent:flags.5?true peer:InputPeer bot:InputUser url:flags.1?string 
start_param:flags.3?string theme_params:flags.2?DataJSON 
reply_to_msg_id:flags.0?int send_as:flags.13?InputPeer = WebViewResult;
-messages.prolongWebView#ea5fbcce flags:# silent:flags.5?true peer:InputPeer 
bot:InputUser query_id:long reply_to_msg_id:flags.0?int 
send_as:flags.13?InputPeer = Bool;
-messages.requestSimpleWebView#6abb2f73 flags:# bot:InputUser url:string 
theme_params:flags.0?DataJSON = SimpleWebViewResult;
+messages.requestWebView#178b480b flags:# from_bot_menu:flags.4?true 
silent:flags.5?true peer:InputPeer bot:InputUser url:flags.1?string 
start_param:flags.3?string theme_params:flags.2?DataJSON platform:string 
reply_to_msg_id:flags.0?int top_msg_id:flags.9?int send_as:flags.13?InputPeer = 
WebViewResult;
+messages.prolongWebView#7ff34309 flags:# silent:flags.5?true peer:InputPeer 
bot:InputUser query_id:long reply_to_msg_id:flags.0?int top_msg_id:flags.9?int 
send_as:flags.13?InputPeer = Bool;
+messages.requestSimpleWebView#299bec8e flags:# bot:InputUser url:string 
theme_params:flags.0?DataJSON platform:string = SimpleWebViewResult;
 messages.sendWebViewResultMessage#a4314f5 bot_query_id:string 
result:InputBotInlineResult = WebViewMessageSent;
 messages.sendWebViewData#dc0242c8 bot:InputUser random_id:long 
button_text:string data:string = Updates;
 messages.transcribeAudio#269e9a49 peer:InputPeer msg_id:int = 
messages.TranscribedAudio;
@@ -1707,6 +1782,11 @@
 messages.getCustomEmojiDocuments#d9ab0f54 document_id:Vector<long> = 
Vector<Document>;
 messages.getEmojiStickers#fbfca18f hash:long = messages.AllStickers;
 messages.getFeaturedEmojiStickers#ecf6736 hash:long = 
messages.FeaturedStickers;
+messages.reportReaction#3f64c076 peer:InputPeer id:int reaction_peer:InputPeer 
= Bool;
+messages.getTopReactions#bb8125ba limit:int hash:long = messages.Reactions;
+messages.getRecentReactions#39461db2 limit:int hash:long = messages.Reactions;
+messages.clearRecentReactions#9dfeefb4 = Bool;
+messages.getExtendedMedia#84f80814 peer:InputPeer id:Vector<int> = Updates;
 
 updates.getState#edd4882a = updates.State;
 updates.getDifference#25939651 flags:# pts:int pts_total_limit:flags.0?int 
date:int qts:int = updates.Difference;
@@ -1791,6 +1871,17 @@
 channels.deleteParticipantHistory#367544db channel:InputChannel 
participant:InputPeer = messages.AffectedHistory;
 channels.toggleJoinToSend#e4cb9580 channel:InputChannel enabled:Bool = Updates;
 channels.toggleJoinRequest#4c2985b6 channel:InputChannel enabled:Bool = 
Updates;
+channels.reorderUsernames#b45ced1d channel:InputChannel order:Vector<string> = 
Bool;
+channels.toggleUsername#50f24105 channel:InputChannel username:string 
active:Bool = Bool;
+channels.deactivateAllUsernames#a245dd3 channel:InputChannel = Bool;
+channels.toggleForum#a4298b29 channel:InputChannel enabled:Bool = Updates;
+channels.createForumTopic#f40c0224 flags:# channel:InputChannel title:string 
icon_color:flags.0?int icon_emoji_id:flags.3?long random_id:long 
send_as:flags.2?InputPeer = Updates;
+channels.getForumTopics#de560d1 flags:# channel:InputChannel q:flags.0?string 
offset_date:int offset_id:int offset_topic:int limit:int = messages.ForumTopics;
+channels.getForumTopicsByID#b0831eb9 channel:InputChannel topics:Vector<int> = 
messages.ForumTopics;
+channels.editForumTopic#6c883e2d flags:# channel:InputChannel topic_id:int 
title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool = Updates;
+channels.updatePinnedForumTopic#6c2d9026 channel:InputChannel topic_id:int 
pinned:Bool = Updates;
+channels.deleteTopicHistory#34435f2d channel:InputChannel top_msg_id:int = 
messages.AffectedHistory;
+channels.reorderPinnedForumTopics#2950a18f flags:# force:flags.0?true 
channel:InputChannel order:Vector<int> = Updates;
 
 bots.sendCustomRequest#aa2769ed custom_method:string params:DataJSON = 
DataJSON;
 bots.answerWebhookJSONQuery#e6213f4d query_id:long data:DataJSON = Bool;
@@ -1813,7 +1904,6 @@
 payments.assignAppStoreTransaction#80ed747d receipt:bytes 
purpose:InputStorePaymentPurpose = Updates;
 payments.assignPlayMarketTransaction#dffd50d3 receipt:DataJSON 
purpose:InputStorePaymentPurpose = Updates;
 payments.canPurchasePremium#9fc19eb6 purpose:InputStorePaymentPurpose = Bool;
-payments.requestRecurringPayment#146e958d user_id:InputUser 
recurring_init_charge:string invoice_media:InputMedia = Updates;
 
 stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true 
animated:flags.1?true videos:flags.4?true user_id:InputUser title:string 
short_name:string thumb:flags.2?InputDocument 
stickers:Vector<InputStickerSetItem> software:flags.3?string = 
messages.StickerSet;
 stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = 
messages.StickerSet;
@@ -1870,4 +1960,4 @@
 stats.getMessagePublicForwards#5630281b channel:InputChannel msg_id:int 
offset_rate:int offset_peer:InputPeer offset_id:int limit:int = 
messages.Messages;
 stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel 
msg_id:int = stats.MessageStats;
 
-// LAYER 144
+// LAYER 149
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon_generator/data/errors.csv 
new/Telethon-1.26.0/telethon_generator/data/errors.csv
--- old/Telethon-1.25.4/telethon_generator/data/errors.csv      2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon_generator/data/errors.csv      2022-11-25 
18:23:28.000000000 +0100
@@ -57,6 +57,7 @@
 CALL_PROTOCOL_FLAGS_INVALID,400,Call protocol flags invalid
 CDN_METHOD_INVALID,400,This method cannot be invoked on a CDN server. Refer to 
https://core.telegram.org/cdn#schema for available methods
 CHANNELS_ADMIN_PUBLIC_TOO_MUCH,400,"You're admin of too many public channels, 
make some channels private to change the username of this channel"
+CHANNEL_TOO_BIG,400,
 CHANNELS_TOO_MUCH,400,You have joined too many channels/supergroups
 CHANNEL_BANNED,400,The channel is banned
 CHANNEL_INVALID,400,"Invalid channel object. Make sure to pass the right 
types, for instance making sure that the request is designed for channels or 
otherwise look for a different one more suited"
@@ -67,6 +68,7 @@
 CHAT_ABOUT_TOO_LONG,400,Chat about too long
 CHAT_ADMIN_INVITE_REQUIRED,403,You do not have the rights to do this
 CHAT_ADMIN_REQUIRED,400,"Chat admin privileges are required to do that in the 
specified chat (for example, to send a message in a channel which is not 
yours), or invalid permissions used for the channel or group"
+CHAT_DISCUSSION_UNALLOWED,400,
 CHAT_FORBIDDEN,403,You cannot write in this chat
 CHAT_FORWARDS_RESTRICTED,400,
 CHAT_ID_EMPTY,400,The provided chat ID is empty
@@ -120,6 +122,7 @@
 ENTITY_BOUNDS_INVALID,400,Some of provided entities have invalid bounds 
(length is zero or out of the boundaries of the string)
 ENTITY_MENTION_USER_INVALID,400,You can't use this entity
 ERROR_TEXT_EMPTY,400,The provided error message is empty
+EXPIRE_DATE_INVALID,400,
 EXPIRE_FORBIDDEN,400,
 EXPORT_CARD_INVALID,400,Provided card is invalid
 EXTERNAL_URL_INVALID,400,External URL invalid
@@ -229,6 +232,7 @@
 NEW_SALT_INVALID,400,The new salt is invalid
 NEW_SETTINGS_INVALID,400,The new settings are invalid
 NEXT_OFFSET_INVALID,400,The value for next_offset is invalid. Check that it 
has normal characters and is not too long
+NOT_ALLOWED,403,
 OFFSET_INVALID,400,"The given offset was invalid, it must be divisible by 1KB. 
See https://core.telegram.org/api/files#downloading-files";
 OFFSET_PEER_ID_INVALID,400,The provided offset peer is invalid
 OPTIONS_TOO_MUCH,400,You defined too many options for the poll
@@ -238,6 +242,7 @@
 PARTICIPANTS_TOO_FEW,400,Not enough participants
 PARTICIPANT_CALL_FAILED,500,Failure while making call
 PARTICIPANT_JOIN_MISSING,403,
+PARTICIPANT_ID_INVALID,400,
 PARTICIPANT_VERSION_OUTDATED,400,The other participant does not use an up to 
date telegram client with support for calls
 PASSWORD_EMPTY,400,The provided password is empty
 PASSWORD_HASH_INVALID,400,The password (and thus its hash value) you entered 
is invalid
@@ -248,6 +253,7 @@
 PASSWORD_TOO_FRESH_X,400,The password was added too recently and {seconds} 
seconds must pass before using the method
 PAYMENT_PROVIDER_INVALID,400,The payment provider was not recognised or its 
token was invalid
 PEER_FLOOD,400,Too many requests
+PEER_HISTORY_EMPTY,400,
 PEER_ID_INVALID,400,"An invalid Peer was used. Make sure to pass the right 
peer type and that the value is valid (for instance, bots cannot start 
conversations)"
 PEER_ID_NOT_SUPPORTED,400,The provided peer ID is not supported
 PERSISTENT_TIMESTAMP_EMPTY,400,Persistent timestamp empty
@@ -285,6 +291,7 @@
 POLL_VOTE_REQUIRED,403,
 POSTPONED_TIMEOUT,500,The postponed call has timed out
 PREMIUM_ACCOUNT_REQUIRED,403,
+PREMIUM_CURRENTLY_UNAVAILABLE,406,
 PREVIOUS_CHAT_IMPORT_ACTIVE_WAIT_XMIN,406,"Similar to a flood wait, must wait 
{minutes} minutes"
 PRIVACY_KEY_INVALID,400,The privacy key is invalid
 PRIVACY_TOO_LONG,400,Cannot add that many entities in a single request
@@ -326,6 +333,8 @@
 SCHEDULE_TOO_MUCH,400,You cannot schedule more messages in this chat (last 
known limit of 100 per chat)
 SEARCH_QUERY_EMPTY,400,The search query is empty
 SECONDS_INVALID,400,"Slow mode only supports certain values (e.g. 0, 10s, 30s, 
1m, 5m, 15m and 1h)"
+SEND_AS_PEER_INVALID,400,
+SEND_CODE_UNAVAILABLE,406,
 SEND_MESSAGE_MEDIA_INVALID,400,The message media was invalid or not specified
 SEND_MESSAGE_TYPE_INVALID,400,The message type is invalid
 SENSITIVE_CHANGE_FORBIDDEN,403,Your sensitive content settings cannot be 
changed at this time
@@ -370,6 +379,7 @@
 TMP_PASSWORD_DISABLED,400,The temporary password is disabled
 TMP_PASSWORD_INVALID,400,Password auth needs to be regenerated
 TOKEN_INVALID,400,The provided token is invalid
+TOPIC_DELETED,400,The topic was deleted
 TTL_DAYS_INVALID,400,The provided TTL is invalid
 TTL_MEDIA_INVALID,400,The provided media cannot be used with a TTL
 TTL_PERIOD_INVALID,400,The provided TTL Period is invalid
@@ -378,6 +388,7 @@
 UNKNOWN_ERROR,400,
 UNKNOWN_METHOD,500,The method you tried to call cannot be called on non-CDN DCs
 UNTIL_DATE_INVALID,400,That date cannot be specified in this request (try 
using None)
+UPDATE_APP_TO_LOGIN,406,
 URL_INVALID,400,The URL used was invalid (e.g. when answering a callback with 
a URL that's not t.me/yourbot or your game's URL)
 USER_VOLUME_INVALID,400,
 USERNAME_INVALID,400,"Nobody is using this username, or the username is 
unacceptable. If the latter, it must match r""[a-zA-Z][\w\d]{3,30}[a-zA-Z\d]"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Telethon-1.25.4/telethon_generator/data/methods.csv 
new/Telethon-1.26.0/telethon_generator/data/methods.csv
--- old/Telethon-1.25.4/telethon_generator/data/methods.csv     2022-10-14 
18:43:44.000000000 +0200
+++ new/Telethon-1.26.0/telethon_generator/data/methods.csv     2022-11-25 
18:23:28.000000000 +0100
@@ -80,7 +80,7 @@
 auth.logOut,both,
 auth.recoverPassword,user,CODE_EMPTY NEW_SETTINGS_INVALID
 auth.requestPasswordRecovery,user,PASSWORD_EMPTY PASSWORD_RECOVERY_NA
-auth.resendCode,user,PHONE_NUMBER_INVALID
+auth.resendCode,user,PHONE_NUMBER_INVALID SEND_CODE_UNAVAILABLE
 auth.resetAuthorizations,user,TIMEOUT
 auth.sendCode,user,API_ID_INVALID API_ID_PUBLISHED_FLOOD AUTH_RESTART 
INPUT_REQUEST_TOO_LONG PHONE_NUMBER_APP_SIGNUP_FORBIDDEN PHONE_NUMBER_BANNED 
PHONE_NUMBER_FLOOD PHONE_NUMBER_INVALID PHONE_PASSWORD_FLOOD 
PHONE_PASSWORD_PROTECTED
 auth.signIn,user,PHONE_CODE_EMPTY PHONE_CODE_EXPIRED PHONE_CODE_INVALID 
PHONE_NUMBER_INVALID PHONE_NUMBER_UNOCCUPIED SESSION_PASSWORD_NEEDED
@@ -92,7 +92,7 @@
 channels.convertToGigagroup,user,PARTICIPANTS_TOO_FEW
 channels.createChannel,user,CHAT_TITLE_EMPTY USER_RESTRICTED
 channels.deleteChannel,user,CHANNEL_INVALID CHANNEL_PRIVATE CHANNEL_TOO_LARGE
-channels.deleteHistory,user,
+channels.deleteHistory,user,CHANNEL_TOO_BIG
 channels.deleteMessages,both,CHANNEL_INVALID CHANNEL_PRIVATE 
MESSAGE_DELETE_FORBIDDEN
 channels.deleteUserHistory,user,CHANNEL_INVALID CHAT_ADMIN_REQUIRED
 channels.editAdmin,both,ADMINS_TOO_MUCH ADMIN_RANK_EMOJI_NOT_ALLOWED 
ADMIN_RANK_INVALID BOT_CHANNELS_NA CHANNEL_INVALID CHAT_ADMIN_INVITE_REQUIRED 
CHAT_ADMIN_REQUIRED FRESH_CHANGE_ADMINS_FORBIDDEN RIGHT_FORBIDDEN USER_CREATOR 
USER_ID_INVALID USER_NOT_MUTUAL_CONTACT USER_PRIVACY_RESTRICTED
@@ -113,7 +113,7 @@
 channels.getParticipant,both,CHANNEL_INVALID CHANNEL_PRIVATE 
CHAT_ADMIN_REQUIRED USER_ID_INVALID USER_NOT_PARTICIPANT
 channels.getParticipants,both,CHANNEL_INVALID CHANNEL_PRIVATE 
CHAT_ADMIN_REQUIRED INPUT_CONSTRUCTOR_INVALID TIMEOUT
 channels.inviteToChannel,user,BOTS_TOO_MUCH BOT_GROUPS_BLOCKED CHANNEL_INVALID 
CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_INVALID CHAT_WRITE_FORBIDDEN 
INPUT_USER_DEACTIVATED USERS_TOO_MUCH USER_BANNED_IN_CHANNEL USER_BLOCKED 
USER_BOT USER_CHANNELS_TOO_MUCH USER_ID_INVALID USER_KICKED 
USER_NOT_MUTUAL_CONTACT USER_PRIVACY_RESTRICTED
-channels.joinChannel,user,CHANNELS_TOO_MUCH CHANNEL_INVALID CHANNEL_PRIVATE
+channels.joinChannel,user,CHANNELS_TOO_MUCH CHANNEL_INVALID CHANNEL_PRIVATE 
INVITE_REQUEST_SENT
 channels.leaveChannel,both,CHANNEL_INVALID CHANNEL_PRIVATE 
CHANNEL_PUBLIC_GROUP_NA USER_CREATOR USER_NOT_PARTICIPANT
 channels.readHistory,user,CHANNEL_INVALID CHANNEL_PRIVATE
 channels.readMessageContents,user,CHANNEL_INVALID CHANNEL_PRIVATE
@@ -142,6 +142,7 @@
 contacts.resetTopPeerRating,user,PEER_ID_INVALID
 contacts.resolveUsername,both,AUTH_KEY_PERM_EMPTY SESSION_PASSWORD_NEEDED 
USERNAME_INVALID USERNAME_NOT_OCCUPIED
 contacts.search,user,QUERY_TOO_SHORT SEARCH_QUERY_EMPTY TIMEOUT
+channels.toggleForum,user,CHAT_DISCUSSION_UNALLOWED
 contacts.toggleTopPeers,user,
 contacts.unblock,user,CONTACT_ID_INVALID
 folders.deleteFolder,user,FOLDER_ID_EMPTY
@@ -197,9 +198,9 @@
 messages.editChatTitle,both,CHAT_ID_INVALID NEED_CHAT_INVALID
 messages.editInlineBotMessage,both,MESSAGE_ID_INVALID MESSAGE_NOT_MODIFIED 
ENTITY_BOUNDS_INVALID
 messages.editMessage,both,CHANNEL_INVALID CHANNEL_PRIVATE CHAT_WRITE_FORBIDDEN 
INLINE_BOT_REQUIRED INPUT_USER_DEACTIVATED MEDIA_GROUPED_INVALID 
MEDIA_NEW_INVALID MEDIA_PREV_INVALID MESSAGE_AUTHOR_REQUIRED 
MESSAGE_EDIT_TIME_EXPIRED MESSAGE_EMPTY MESSAGE_ID_INVALID MESSAGE_NOT_MODIFIED 
PEER_ID_INVALID ENTITY_BOUNDS_INVALID
-messages.exportChatInvite,both,CHAT_ID_INVALID
+messages.exportChatInvite,both,CHAT_ID_INVALID EXPIRE_DATE_INVALID
 messages.faveSticker,user,STICKER_ID_INVALID
-messages.forwardMessages,both,BROADCAST_PUBLIC_VOTERS_FORBIDDEN 
CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_ID_INVALID 
CHAT_SEND_GIFS_FORBIDDEN CHAT_SEND_MEDIA_FORBIDDEN CHAT_SEND_STICKERS_FORBIDDEN 
CHAT_WRITE_FORBIDDEN GROUPED_MEDIA_INVALID INPUT_USER_DEACTIVATED MEDIA_EMPTY 
MESSAGE_IDS_EMPTY MESSAGE_ID_INVALID PEER_ID_INVALID PTS_CHANGE_EMPTY 
QUIZ_ANSWER_MISSING RANDOM_ID_DUPLICATE RANDOM_ID_INVALID 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH TIMEOUT USER_BANNED_IN_CHANNEL 
USER_IS_BLOCKED USER_IS_BOT YOU_BLOCKED_USER
+messages.forwardMessages,both,BROADCAST_PUBLIC_VOTERS_FORBIDDEN 
CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_ID_INVALID 
CHAT_SEND_GIFS_FORBIDDEN CHAT_SEND_MEDIA_FORBIDDEN CHAT_SEND_STICKERS_FORBIDDEN 
CHAT_WRITE_FORBIDDEN GROUPED_MEDIA_INVALID INPUT_USER_DEACTIVATED MEDIA_EMPTY 
MESSAGE_IDS_EMPTY MESSAGE_ID_INVALID PEER_ID_INVALID PTS_CHANGE_EMPTY 
QUIZ_ANSWER_MISSING RANDOM_ID_DUPLICATE RANDOM_ID_INVALID 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH TIMEOUT USER_BANNED_IN_CHANNEL 
USER_IS_BLOCKED USER_IS_BOT YOU_BLOCKED_USER TOPIC_DELETED
 messages.getAllChats,user,
 messages.getAllDrafts,user,
 messages.getAllStickers,user,
@@ -251,7 +252,7 @@
 messages.getWebPagePreview,user,ENTITY_BOUNDS_INVALID
 messages.hideAllChatJoinRequests,user,HIDE_REQUESTER_MISSING
 messages.hidePeerSettingsBar,user,
-messages.importChatInvite,user,CHANNELS_TOO_MUCH INVITE_HASH_EMPTY 
INVITE_HASH_EXPIRED INVITE_HASH_INVALID SESSION_PASSWORD_NEEDED USERS_TOO_MUCH 
USER_ALREADY_PARTICIPANT
+messages.importChatInvite,user,CHANNELS_TOO_MUCH INVITE_HASH_EMPTY 
INVITE_HASH_EXPIRED INVITE_HASH_INVALID INVITE_REQUEST_SENT 
SESSION_PASSWORD_NEEDED USERS_TOO_MUCH USER_ALREADY_PARTICIPANT
 messages.initHistoryImport,user,IMPORT_FILE_INVALID IMPORT_FORMAT_UNRECOGNIZED 
PREVIOUS_CHAT_IMPORT_ACTIVE_WAIT_XMIN TIMEOUT
 messages.installStickerSet,user,STICKERSET_INVALID
 messages.markDialogUnread,user,
@@ -280,10 +281,10 @@
 messages.sendEncrypted,user,CHAT_ID_INVALID DATA_INVALID ENCRYPTION_DECLINED 
MSG_WAIT_FAILED
 messages.sendEncryptedFile,user,MSG_WAIT_FAILED
 messages.sendEncryptedService,user,DATA_INVALID ENCRYPTION_DECLINED 
MSG_WAIT_FAILED USER_IS_BLOCKED
-messages.sendInlineBotResult,user,CHAT_SEND_INLINE_FORBIDDEN 
CHAT_WRITE_FORBIDDEN INLINE_RESULT_EXPIRED PEER_ID_INVALID QUERY_ID_EMPTY 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH WEBPAGE_CURL_FAILED 
WEBPAGE_MEDIA_EMPTY ENTITY_BOUNDS_INVALID
-messages.sendMedia,both,BOT_PAYMENTS_DISABLED BOT_POLLS_DISABLED 
BROADCAST_PUBLIC_VOTERS_FORBIDDEN CHANNEL_INVALID CHANNEL_PRIVATE 
CHAT_ADMIN_REQUIRED CHAT_SEND_MEDIA_FORBIDDEN CHAT_WRITE_FORBIDDEN 
CURRENCY_TOTAL_AMOUNT_INVALID EMOTICON_INVALID EXTERNAL_URL_INVALID 
FILE_PARTS_INVALID FILE_PART_LENGTH_INVALID FILE_REFERENCE_EMPTY 
FILE_REFERENCE_EXPIRED GAME_BOT_INVALID INPUT_USER_DEACTIVATED 
MEDIA_CAPTION_TOO_LONG MEDIA_EMPTY PAYMENT_PROVIDER_INVALID PEER_ID_INVALID 
PHOTO_EXT_INVALID PHOTO_INVALID_DIMENSIONS PHOTO_SAVE_FILE_INVALID 
POLL_ANSWERS_INVALID POLL_OPTION_DUPLICATE POLL_QUESTION_INVALID 
QUIZ_CORRECT_ANSWERS_EMPTY QUIZ_CORRECT_ANSWERS_TOO_MUCH 
QUIZ_CORRECT_ANSWER_INVALID QUIZ_MULTIPLE_INVALID RANDOM_ID_DUPLICATE 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH STORAGE_CHECK_FAILED TIMEOUT 
USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT VIDEO_CONTENT_TYPE_INVALID 
WEBPAGE_CURL_FAILED WEBPAGE_MEDIA_EMPTY POSTPONED_TIMEOUT ENTITY_BOUNDS_INVALID
-messages.sendMessage,both,AUTH_KEY_DUPLICATED BOT_DOMAIN_INVALID 
BUTTON_DATA_INVALID BUTTON_TYPE_INVALID BUTTON_URL_INVALID CHANNEL_INVALID 
CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_ID_INVALID CHAT_RESTRICTED 
CHAT_WRITE_FORBIDDEN ENTITIES_TOO_LONG ENTITY_MENTION_USER_INVALID 
INPUT_USER_DEACTIVATED MESSAGE_EMPTY MESSAGE_TOO_LONG MSG_ID_INVALID 
PEER_ID_INVALID POLL_OPTION_INVALID RANDOM_ID_DUPLICATE REPLY_MARKUP_INVALID 
REPLY_MARKUP_TOO_LONG SCHEDULE_BOT_NOT_ALLOWED SCHEDULE_DATE_TOO_LATE 
SCHEDULE_STATUS_PRIVATE SCHEDULE_TOO_MUCH TIMEOUT USER_BANNED_IN_CHANNEL 
USER_IS_BLOCKED USER_IS_BOT YOU_BLOCKED_USER ENTITY_BOUNDS_INVALID
-messages.sendMultiMedia,both,MULTI_MEDIA_TOO_LONG SCHEDULE_DATE_TOO_LATE 
SCHEDULE_TOO_MUCH ENTITY_BOUNDS_INVALID
+messages.sendInlineBotResult,user,CHAT_SEND_INLINE_FORBIDDEN 
CHAT_WRITE_FORBIDDEN INLINE_RESULT_EXPIRED PEER_ID_INVALID QUERY_ID_EMPTY 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH WEBPAGE_CURL_FAILED 
WEBPAGE_MEDIA_EMPTY ENTITY_BOUNDS_INVALID TOPIC_DELETED
+messages.sendMedia,both,BOT_PAYMENTS_DISABLED BOT_POLLS_DISABLED 
BROADCAST_PUBLIC_VOTERS_FORBIDDEN CHANNEL_INVALID CHANNEL_PRIVATE 
CHAT_ADMIN_REQUIRED CHAT_SEND_MEDIA_FORBIDDEN CHAT_WRITE_FORBIDDEN 
CURRENCY_TOTAL_AMOUNT_INVALID EMOTICON_INVALID EXTERNAL_URL_INVALID 
FILE_PARTS_INVALID FILE_PART_LENGTH_INVALID FILE_REFERENCE_EMPTY 
FILE_REFERENCE_EXPIRED GAME_BOT_INVALID INPUT_USER_DEACTIVATED 
MEDIA_CAPTION_TOO_LONG MEDIA_EMPTY PAYMENT_PROVIDER_INVALID PEER_ID_INVALID 
PHOTO_EXT_INVALID PHOTO_INVALID_DIMENSIONS PHOTO_SAVE_FILE_INVALID 
POLL_ANSWERS_INVALID POLL_OPTION_DUPLICATE POLL_QUESTION_INVALID 
QUIZ_CORRECT_ANSWERS_EMPTY QUIZ_CORRECT_ANSWERS_TOO_MUCH 
QUIZ_CORRECT_ANSWER_INVALID QUIZ_MULTIPLE_INVALID RANDOM_ID_DUPLICATE 
SCHEDULE_DATE_TOO_LATE SCHEDULE_TOO_MUCH STORAGE_CHECK_FAILED TIMEOUT 
USER_BANNED_IN_CHANNEL USER_IS_BLOCKED USER_IS_BOT VIDEO_CONTENT_TYPE_INVALID 
WEBPAGE_CURL_FAILED WEBPAGE_MEDIA_EMPTY POSTPONED_TIMEOUT ENTITY_BOUNDS_INVALID 
TOPIC_DELETED
+messages.sendMessage,both,AUTH_KEY_DUPLICATED BOT_DOMAIN_INVALID 
BUTTON_DATA_INVALID BUTTON_TYPE_INVALID BUTTON_URL_INVALID CHANNEL_INVALID 
CHANNEL_PRIVATE CHAT_ADMIN_REQUIRED CHAT_ID_INVALID CHAT_RESTRICTED 
CHAT_WRITE_FORBIDDEN ENTITIES_TOO_LONG ENTITY_MENTION_USER_INVALID 
INPUT_USER_DEACTIVATED MESSAGE_EMPTY MESSAGE_TOO_LONG MSG_ID_INVALID 
PEER_ID_INVALID POLL_OPTION_INVALID RANDOM_ID_DUPLICATE REPLY_MARKUP_INVALID 
REPLY_MARKUP_TOO_LONG SCHEDULE_BOT_NOT_ALLOWED SCHEDULE_DATE_TOO_LATE 
SCHEDULE_STATUS_PRIVATE SCHEDULE_TOO_MUCH TIMEOUT USER_BANNED_IN_CHANNEL 
USER_IS_BLOCKED USER_IS_BOT YOU_BLOCKED_USER ENTITY_BOUNDS_INVALID TOPIC_DELETED
+messages.sendMultiMedia,both,MULTI_MEDIA_TOO_LONG SCHEDULE_DATE_TOO_LATE 
SCHEDULE_TOO_MUCH ENTITY_BOUNDS_INVALID TOPIC_DELETED
 messages.sendScheduledMessages,user,
 messages.sendVote,user,MESSAGE_POLL_CLOSED OPTION_INVALID
 messages.setBotCallbackAnswer,both,QUERY_ID_INVALID URL_INVALID
@@ -298,7 +299,7 @@
 messages.setTyping,both,CHANNEL_INVALID CHANNEL_PRIVATE CHAT_ID_INVALID 
CHAT_WRITE_FORBIDDEN PEER_ID_INVALID USER_BANNED_IN_CHANNEL USER_IS_BLOCKED 
USER_IS_BOT
 messages.startBot,user,BOT_INVALID PEER_ID_INVALID START_PARAM_EMPTY 
START_PARAM_INVALID
 messages.startHistoryImport,user,IMPORT_ID_INVALID
-messages.toggleDialogPin,user,PEER_ID_INVALID PINNED_DIALOGS_TOO_MUCH
+messages.toggleDialogPin,user,PEER_HISTORY_EMPTY PEER_ID_INVALID 
PINNED_DIALOGS_TOO_MUCH
 messages.toggleStickerSets,user,
 messages.uninstallStickerSet,user,STICKERSET_INVALID
 messages.updateDialogFilter,user,
@@ -341,10 +342,10 @@
 stats.getBroadcastStats,user,BROADCAST_REQUIRED CHAT_ADMIN_REQUIRED 
CHP_CALL_FAIL STATS_MIGRATE_X
 stats.getMegagroupStats,user,CHAT_ADMIN_REQUIRED MEGAGROUP_REQUIRED 
STATS_MIGRATE_X
 stats.loadAsyncGraph,user,GRAPH_INVALID_RELOAD GRAPH_OUTDATED_RELOAD
-stickers.addStickerToSet,bot,BOT_MISSING STICKERSET_INVALID STICKER_PNG_NOPNG 
STICKER_TGS_NOTGS
+stickers.addStickerToSet,both,BOT_MISSING STICKERSET_INVALID STICKER_PNG_NOPNG 
STICKER_TGS_NOTGS
 stickers.changeStickerPosition,bot,BOT_MISSING STICKER_INVALID
 stickers.checkShortName,user,SHORT_NAME_INVALID SHORT_NAME_OCCUPIED
-stickers.createStickerSet,bot,BOT_MISSING PACK_SHORT_NAME_INVALID 
PACK_SHORT_NAME_OCCUPIED PEER_ID_INVALID SHORTNAME_OCCUPY_FAILED STICKERS_EMPTY 
STICKER_EMOJI_INVALID STICKER_FILE_INVALID STICKER_PNG_DIMENSIONS 
STICKER_PNG_NOPNG STICKER_TGS_NOTGS STICKER_THUMB_PNG_NOPNG 
STICKER_THUMB_TGS_NOTGS USER_ID_INVALID
+stickers.createStickerSet,both,BOT_MISSING PACK_SHORT_NAME_INVALID 
PACK_SHORT_NAME_OCCUPIED PEER_ID_INVALID SHORTNAME_OCCUPY_FAILED STICKERS_EMPTY 
STICKER_EMOJI_INVALID STICKER_FILE_INVALID STICKER_PNG_DIMENSIONS 
STICKER_PNG_NOPNG STICKER_TGS_NOTGS STICKER_THUMB_PNG_NOPNG 
STICKER_THUMB_TGS_NOTGS USER_ID_INVALID
 stickers.removeStickerFromSet,bot,BOT_MISSING STICKER_INVALID
 stickers.setStickerSetThumb,bot,STICKER_THUMB_PNG_NOPNG STICKER_THUMB_TGS_NOTGS
 stickers.suggestShortName,user,TITLE_INVALID

Reply via email to