mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-10 19:46:36 +03:00
251c1830a5
The code generator now handles okay the flags using True type Also, double checking for the flag is now avoided in cases where the flag was a Vector type
83 lines
3.5 KiB
Python
83 lines
3.5 KiB
Python
class InvalidParameterError(Exception):
|
|
"""Occurs when an invalid parameter is given, for example,
|
|
when either A or B are required but none is given"""
|
|
|
|
|
|
class TypeNotFoundError(Exception):
|
|
"""Occurs when a type is not found, for example,
|
|
when trying to read a TLObject with an invalid constructor code"""
|
|
def __init__(self, invalid_constructor_id):
|
|
super().__init__(self, 'Could not find a matching Constructor ID for the TLObject '
|
|
'that was supposed to be read with ID {}. Most likely, a TLObject '
|
|
'was trying to be read when it should not be read.'
|
|
.format(hex(invalid_constructor_id)))
|
|
|
|
self.invalid_constructor_id = invalid_constructor_id
|
|
|
|
|
|
class InvalidDCError(Exception):
|
|
def __init__(self, new_dc):
|
|
super().__init__(self, 'Your phone number is registered to #{} DC. '
|
|
'This should have been handled automatically; '
|
|
'if it has not, please restart the app.')
|
|
|
|
self.new_dc = new_dc
|
|
|
|
|
|
class InvalidChecksumError(Exception):
|
|
def __init__(self, checksum, valid_checksum):
|
|
super().__init__(self, 'Invalid checksum ({} when {} was expected). This packet should be skipped.'
|
|
.format(checksum, valid_checksum))
|
|
|
|
self.checksum = checksum
|
|
self.valid_checksum = valid_checksum
|
|
|
|
|
|
class RPCError(Exception):
|
|
def __init__(self, message):
|
|
super().__init__(self, message)
|
|
self.message = message
|
|
|
|
|
|
class BadMessageError(Exception):
|
|
"""Occurs when handling a bad_message_notification"""
|
|
ErrorMessages = {
|
|
16: 'msg_id too low (most likely, client time is wrong it would be worthwhile to '
|
|
'synchronize it using msg_id notifications and re-send the original message '
|
|
'with the “correct” msg_id or wrap it in a container with a new msg_id if the '
|
|
'original message had waited too long on the client to be transmitted).',
|
|
|
|
17: 'msg_id too high (similar to the previous case, the client time has to be '
|
|
'synchronized, and the message re-sent with the correct msg_id).',
|
|
|
|
18: 'Incorrect two lower order msg_id bits (the server expects client message msg_id '
|
|
'to be divisible by 4).',
|
|
|
|
19: 'Container msg_id is the same as msg_id of a previously received message '
|
|
'(this must never happen).',
|
|
|
|
20: 'Message too old, and it cannot be verified whether the server has received a '
|
|
'message with this msg_id or not.',
|
|
|
|
32: 'msg_seqno too low (the server has already received a message with a lower '
|
|
'msg_id but with either a higher or an equal and odd seqno).',
|
|
|
|
33: 'msg_seqno too high (similarly, there is a message with a higher msg_id but with '
|
|
'either a lower or an equal and odd seqno).',
|
|
|
|
34: 'An even msg_seqno expected (irrelevant message), but odd received.',
|
|
|
|
35: 'Odd msg_seqno expected (relevant message), but even received.',
|
|
|
|
48: 'Incorrect server salt (in this case, the bad_server_salt response is received with '
|
|
'the correct salt, and the message is to be re-sent with it).',
|
|
|
|
64: 'Invalid container.'
|
|
}
|
|
|
|
def __init__(self, code):
|
|
super().__init__(self, BadMessageError
|
|
.ErrorMessages.get(code,'Unknown error code (this should not happen): {}.'.format(code)))
|
|
|
|
self.code = code
|