mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-31 07:57:38 +03:00 
			
		
		
		
	Document the errors/ module
This commit is contained in:
		
							parent
							
								
									a932fb6470
								
							
						
					
					
						commit
						71eb542626
					
				|  | @ -1,3 +1,7 @@ | ||||||
|  | """ | ||||||
|  | This module holds all the base and automatically generated errors that the | ||||||
|  | Telegram API has. See telethon_generator/errors.json for more. | ||||||
|  | """ | ||||||
| import urllib.request | import urllib.request | ||||||
| import re | import re | ||||||
| from threading import Thread | from threading import Thread | ||||||
|  | @ -13,6 +17,13 @@ from .rpc_error_list import * | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def report_error(code, message, report_method): | def report_error(code, message, report_method): | ||||||
|  |     """ | ||||||
|  |     Reports an RPC error to pwrtelegram. | ||||||
|  | 
 | ||||||
|  |     :param code: the integer code of the error (like 400). | ||||||
|  |     :param message: the message representing the error. | ||||||
|  |     :param report_method: the constructor ID of the function that caused it. | ||||||
|  |     """ | ||||||
|     try: |     try: | ||||||
|         # Ensure it's signed |         # Ensure it's signed | ||||||
|         report_method = int.from_bytes( |         report_method = int.from_bytes( | ||||||
|  | @ -30,6 +41,14 @@ def report_error(code, message, report_method): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def rpc_message_to_error(code, message, report_method=None): | def rpc_message_to_error(code, message, report_method=None): | ||||||
|  |     """ | ||||||
|  |     Converts a Telegram's RPC Error to a Python error. | ||||||
|  | 
 | ||||||
|  |     :param code: the integer code of the error (like 400). | ||||||
|  |     :param message: the message representing the error. | ||||||
|  |     :param report_method: if present, the ID of the method that caused it. | ||||||
|  |     :return: the RPCError as a Python exception that represents this error. | ||||||
|  |     """ | ||||||
|     if report_method is not None: |     if report_method is not None: | ||||||
|         Thread( |         Thread( | ||||||
|             target=report_error, |             target=report_error, | ||||||
|  |  | ||||||
|  | @ -2,20 +2,23 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ReadCancelledError(Exception): | class ReadCancelledError(Exception): | ||||||
|     """Occurs when a read operation was cancelled""" |     """Occurs when a read operation was cancelled.""" | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         super().__init__(self, 'The read operation was cancelled.') |         super().__init__(self, 'The read operation was cancelled.') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class InvalidParameterError(Exception): | class InvalidParameterError(Exception): | ||||||
|     """Occurs when an invalid parameter is given, for example, |     """ | ||||||
|     when either A or B are required but none is given""" |     Occurs when an invalid parameter is given, for example, | ||||||
|  |     when either A or B are required but none is given. | ||||||
|  |     """ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TypeNotFoundError(Exception): | class TypeNotFoundError(Exception): | ||||||
|     """Occurs when a type is not found, for example, |     """ | ||||||
|     when trying to read a TLObject with an invalid constructor code""" |     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): |     def __init__(self, invalid_constructor_id): | ||||||
|         super().__init__( |         super().__init__( | ||||||
|             self, 'Could not find a matching Constructor ID for the TLObject ' |             self, 'Could not find a matching Constructor ID for the TLObject ' | ||||||
|  | @ -27,6 +30,10 @@ class TypeNotFoundError(Exception): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class InvalidChecksumError(Exception): | class InvalidChecksumError(Exception): | ||||||
|  |     """ | ||||||
|  |     Occurs when using the TCP full mode and the checksum of a received | ||||||
|  |     packet doesn't match the expected checksum. | ||||||
|  |     """ | ||||||
|     def __init__(self, checksum, valid_checksum): |     def __init__(self, checksum, valid_checksum): | ||||||
|         super().__init__( |         super().__init__( | ||||||
|             self, |             self, | ||||||
|  | @ -39,6 +46,9 @@ class InvalidChecksumError(Exception): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class BrokenAuthKeyError(Exception): | class BrokenAuthKeyError(Exception): | ||||||
|  |     """ | ||||||
|  |     Occurs when the authorization key for a data center is not valid. | ||||||
|  |     """ | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         super().__init__( |         super().__init__( | ||||||
|             self, |             self, | ||||||
|  | @ -47,6 +57,9 @@ class BrokenAuthKeyError(Exception): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class SecurityError(Exception): | class SecurityError(Exception): | ||||||
|  |     """ | ||||||
|  |     Generic security error, mostly used when generating a new AuthKey. | ||||||
|  |     """ | ||||||
|     def __init__(self, *args): |     def __init__(self, *args): | ||||||
|         if not args: |         if not args: | ||||||
|             args = ['A security check failed.'] |             args = ['A security check failed.'] | ||||||
|  | @ -54,6 +67,10 @@ class SecurityError(Exception): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class CdnFileTamperedError(SecurityError): | class CdnFileTamperedError(SecurityError): | ||||||
|  |     """ | ||||||
|  |     Occurs when there's a hash mismatch between the decrypted CDN file | ||||||
|  |     and its expected hash. | ||||||
|  |     """ | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         super().__init__( |         super().__init__( | ||||||
|             'The CDN file has been altered and its download cancelled.' |             'The CDN file has been altered and its download cancelled.' | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| class RPCError(Exception): | class RPCError(Exception): | ||||||
|  |     """Base class for all Remote Procedure Call errors.""" | ||||||
|     code = None |     code = None | ||||||
|     message = None |     message = None | ||||||
| 
 | 
 | ||||||
|  | @ -81,38 +82,42 @@ class ServerError(RPCError): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class BadMessageError(Exception): | class BadMessageError(Exception): | ||||||
|     """Occurs when handling a bad_message_notification""" |     """Occurs when handling a bad_message_notification.""" | ||||||
|     ErrorMessages = { |     ErrorMessages = { | ||||||
|         16: |         16: | ||||||
|         'msg_id too low (most likely, client time is wrong it would be worthwhile to ' |         'msg_id too low (most likely, client time is wrong it would be ' | ||||||
|         'synchronize it using msg_id notifications and re-send the original message ' |         'worthwhile to synchronize it using msg_id notifications and re-send ' | ||||||
|         'with the "correct" msg_id or wrap it in a container with a new msg_id if the ' |         'the original message with the "correct" msg_id or wrap it in a ' | ||||||
|         'original message had waited too long on the client to be transmitted).', |         'container with a new msg_id if the original message had waited too ' | ||||||
|  |         'long on the client to be transmitted).', | ||||||
|         17: |         17: | ||||||
|         'msg_id too high (similar to the previous case, the client time has to be ' |         'msg_id too high (similar to the previous case, the client time has ' | ||||||
|         'synchronized, and the message re-sent with the correct msg_id).', |         'to be synchronized, and the message re-sent with the correct msg_id).', | ||||||
|         18: |         18: | ||||||
|         'Incorrect two lower order msg_id bits (the server expects client message msg_id ' |         'Incorrect two lower order msg_id bits (the server expects client ' | ||||||
|         'to be divisible by 4).', |         'message msg_id to be divisible by 4).', | ||||||
|         19: |         19: | ||||||
|         'Container msg_id is the same as msg_id of a previously received message ' |         'Container msg_id is the same as msg_id of a previously received ' | ||||||
|         '(this must never happen).', |         'message (this must never happen).', | ||||||
|         20: |         20: | ||||||
|         'Message too old, and it cannot be verified whether the server has received a ' |         'Message too old, and it cannot be verified whether the server has ' | ||||||
|         'message with this msg_id or not.', |         'received a message with this msg_id or not.', | ||||||
|         32: |         32: | ||||||
|         'msg_seqno too low (the server has already received a message with a lower ' |         'msg_seqno too low (the server has already received a message with a ' | ||||||
|         'msg_id but with either a higher or an equal and odd seqno).', |         'lower msg_id but with either a higher or an equal and odd seqno).', | ||||||
|         33: |         33: | ||||||
|         'msg_seqno too high (similarly, there is a message with a higher msg_id but with ' |         'msg_seqno too high (similarly, there is a message with a higher ' | ||||||
|         'either a lower or an equal and odd seqno).', |         'msg_id but with either a lower or an equal and odd seqno).', | ||||||
|         34: |         34: | ||||||
|         'An even msg_seqno expected (irrelevant message), but odd received.', |         'An even msg_seqno expected (irrelevant message), but odd received.', | ||||||
|         35: 'Odd msg_seqno expected (relevant message), but even received.', |         35: | ||||||
|  |         'Odd msg_seqno expected (relevant message), but even received.', | ||||||
|         48: |         48: | ||||||
|         'Incorrect server salt (in this case, the bad_server_salt response is received with ' |         'Incorrect server salt (in this case, the bad_server_salt response ' | ||||||
|         'the correct salt, and the message is to be re-sent with it).', |         'is received with the correct salt, and the message is to be re-sent ' | ||||||
|         64: 'Invalid container.' |         'with it).', | ||||||
|  |         64: | ||||||
|  |         'Invalid container.' | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     def __init__(self, code): |     def __init__(self, code): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user