mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-02 11:10:18 +03:00
Change raise_last to a client-wide switch
This commit is contained in:
parent
15bdad4ea5
commit
1f860eb1bb
|
@ -160,6 +160,12 @@ class TelegramBaseClient(abc.ABC):
|
||||||
was for 21s, it would ``raise FloodWaitError`` instead. Values
|
was for 21s, it would ``raise FloodWaitError`` instead. Values
|
||||||
larger than a day (like ``float('inf')``) will be changed to a day.
|
larger than a day (like ``float('inf')``) will be changed to a day.
|
||||||
|
|
||||||
|
raise_last_call_error (`bool`, optional):
|
||||||
|
When API calls fail in a way that causes Telethon to retry
|
||||||
|
automatically, should the RPC error of the last attempt be raised
|
||||||
|
instead of a generic ValueError. This is mostly useful for
|
||||||
|
detecting when Telegram has internal issues.
|
||||||
|
|
||||||
device_model (`str`, optional):
|
device_model (`str`, optional):
|
||||||
"Device model" to be sent when creating the initial connection.
|
"Device model" to be sent when creating the initial connection.
|
||||||
Defaults to 'PC (n)bit' derived from ``platform.uname().machine``, or its direct value if unknown.
|
Defaults to 'PC (n)bit' derived from ``platform.uname().machine``, or its direct value if unknown.
|
||||||
|
@ -216,6 +222,7 @@ class TelegramBaseClient(abc.ABC):
|
||||||
auto_reconnect: bool = True,
|
auto_reconnect: bool = True,
|
||||||
sequential_updates: bool = False,
|
sequential_updates: bool = False,
|
||||||
flood_sleep_threshold: int = 60,
|
flood_sleep_threshold: int = 60,
|
||||||
|
raise_last_call_error: bool = False,
|
||||||
device_model: str = None,
|
device_model: str = None,
|
||||||
system_version: str = None,
|
system_version: str = None,
|
||||||
app_version: str = None,
|
app_version: str = None,
|
||||||
|
@ -306,6 +313,8 @@ class TelegramBaseClient(abc.ABC):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._raise_last_call_error = raise_last_call_error
|
||||||
|
|
||||||
self._request_retries = request_retries
|
self._request_retries = request_retries
|
||||||
self._connection_retries = connection_retries
|
self._connection_retries = connection_retries
|
||||||
self._retry_delay = retry_delay or 0
|
self._retry_delay = retry_delay or 0
|
||||||
|
|
|
@ -26,10 +26,10 @@ def _fmt_flood(delay, request, *, early=False, td=datetime.timedelta):
|
||||||
|
|
||||||
|
|
||||||
class UserMethods:
|
class UserMethods:
|
||||||
async def __call__(self: 'TelegramClient', request, ordered=False, raise_last=False):
|
async def __call__(self: 'TelegramClient', request, ordered=False):
|
||||||
return await self._call(self._sender, request, ordered=ordered, raise_last=raise_last)
|
return await self._call(self._sender, request, ordered=ordered)
|
||||||
|
|
||||||
async def _call(self: 'TelegramClient', sender, request, ordered=False, raise_last=False):
|
async def _call(self: 'TelegramClient', sender, request, ordered=False):
|
||||||
requests = (request if utils.is_list_like(request) else (request,))
|
requests = (request if utils.is_list_like(request) else (request,))
|
||||||
for r in requests:
|
for r in requests:
|
||||||
if not isinstance(r, TLRequest):
|
if not isinstance(r, TLRequest):
|
||||||
|
@ -118,7 +118,7 @@ class UserMethods:
|
||||||
raise
|
raise
|
||||||
await self._switch_dc(e.new_dc)
|
await self._switch_dc(e.new_dc)
|
||||||
|
|
||||||
if raise_last and last_error is not None:
|
if self._raise_last_call_error and last_error is not None:
|
||||||
raise last_error
|
raise last_error
|
||||||
raise ValueError('Request was unsuccessful {} time(s)'
|
raise ValueError('Request was unsuccessful {} time(s)'
|
||||||
.format(attempt))
|
.format(attempt))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user