LonamiWebs / Telethon

Pure Python 3 MTProto API Telegram client library, for bots too!

Home Page:https://docs.telethon.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

telethon.errors.rpcerrorlist.LimitInvalidError while iter_download

lcipria opened this issue · comments

Code that causes the issue

client.iter_download(file = message, limit = 1, offset = 983040, request_size = 131072)

Expected behavior

iterate for 1 chunk containing the 131072 bytes after the first 983040 from the file in the message

Actual behavior

telethon.errors.rpcerrorlist.LimitInvalidError: An invalid limit was provided.

Traceback

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
  File "/home/luciano/.local/lib/python3.10/site-packages/telethon/requestiter.py", line 87, in __next__
    return self.client.loop.run_until_complete(self.__anext__())
  File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/home/luciano/.local/lib/python3.10/site-packages/telethon/requestiter.py", line 74, in __anext__
    if await self._load_next_chunk():
  File "/home/luciano/.local/lib/python3.10/site-packages/telethon/client/downloads.py", line 66, in _load_next_chunk
    cur = await self._request()
  File "/home/luciano/.local/lib/python3.10/site-packages/telethon/client/downloads.py", line 76, in _request
    result = await self.client._call(self._sender, self.request)
  File "/home/luciano/.local/lib/python3.10/site-packages/telethon/client/users.py", line 87, in _call
    result = await future
telethon.errors.rpcerrorlist.LimitInvalidError: An invalid limit was provided. See https://core.telegram.org/api/files#downloading-files (caused by GetFileRequest)

Telethon version

1.36.0

Python version

3.10.12

Operating system (including distribution name and version)

Ubuntu 22.04.4 LTS

Other details

as documentation:

  • The parameter offset must be divisible by 4 KB.
>>> (983040 / 4096).is_integer()
True
  • The parameter limit must be divisible by 4 KB.
  • 1048576 (1 MB) must be divisible by limit.

P.S.
usingoffset = 1048576 it works

client.iter_download(file = message, limit = 1, offset = 1048576, request_size = 131072)

Checklist

  • The error is in the library's code, and not in my own.
  • I have searched for this issue before posting it and there isn't an open duplicate.
  • I ran pip install -U https://github.com/LonamiWebs/Telethon/archive/v1.zip and triggered the bug in the latest version.

Most RPC errors come directly from Telegram, and this one is no exception. So I don't think the library will be able to "fix" this.

I don't have plans to look into this any time soon, but it sounds like you've already dug into the code a bit, so you're welcome to experiment calling https://tl.telethon.dev/methods/upload/get_file.html directly and see if it can be made work.