mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-31 16:07:44 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| =================
 | |
| Project Structure
 | |
| =================
 | |
| 
 | |
| 
 | |
| Main interface
 | |
| ==============
 | |
| 
 | |
| The library itself is under the ``telethon/`` directory. The
 | |
| ``__init__.py`` file there exposes the main ``TelegramClient``, a class
 | |
| that servers as a nice interface with the most commonly used methods on
 | |
| Telegram such as sending messages, retrieving the message history,
 | |
| handling updates, etc.
 | |
| 
 | |
| The ``TelegramClient`` inherits from several mixing ``Method`` classes,
 | |
| since there are so many methods that having them in a single file would
 | |
| make maintenance painful (it was three thousand lines before this separation
 | |
| happened!). It's a "god object", but there is only a way to interact with
 | |
| Telegram really.
 | |
| 
 | |
| The ``TelegramBaseClient`` is an ABC which will support all of these mixins
 | |
| so they can work together nicely. It doesn't even know how to invoke things
 | |
| because they need to be resolved with user information first (to work with
 | |
| input entities comfortably).
 | |
| 
 | |
| The client makes use of the ``network/mtprotosender.py``. The
 | |
| ``MTProtoSender`` is responsible for connecting, reconnecting,
 | |
| packing, unpacking, sending and receiving items from the network.
 | |
| Basically, the low-level communication with Telegram, and handling
 | |
| MTProto-related functions and types such as ``BadSalt``.
 | |
| 
 | |
| The sender makes use of a ``Connection`` class which knows the format in
 | |
| which outgoing messages should be sent (how to encode their length and
 | |
| their body, if they're further encrypted).
 | |
| 
 | |
| Auto-generated code
 | |
| ===================
 | |
| 
 | |
| The files under ``telethon_generator/`` are used to generate the code
 | |
| that gets placed under ``telethon/tl/``. The parsers take in files in
 | |
| a specific format (such as ``.tl`` for objects and ``.json`` for errors)
 | |
| and spit out the generated classes which represent, as Python classes,
 | |
| the request and types defined in the ``.tl`` file. It also constructs
 | |
| an index so that they can be imported easily.
 | |
| 
 | |
| Custom documentation can also be generated to easily navigate through
 | |
| the vast amount of items offered by the API.
 | |
| 
 | |
| If you clone the repository, you will have to run ``python setup.py gen``
 | |
| in order to generate the code. Installing the library runs the generator
 | |
| too, but the mentioned command will just generate code.
 |