Understanding the Type Language

Telegram’s Type Language (also known as TL, found on .tl files) is a concise way to define what other programming languages commonly call classes or structs.

Every definition is written as follows for a Telegram object is defined as follows:

name#id argument_name:argument_type = CommonType

This means that in a single line you know what the TLObject name is. You know it’s unique ID, and you know what arguments it has. It really isn’t that hard to write a generator for generating code to any platform!

The generated code should also be able to encode the TLObject (let this be a request or a type) into bytes, so they can be sent over the network. This isn’t a big deal either, because you know how the TLObject‘s are made, and how the types should be serialized.

You can either write your own code generator, or use the one this library provides, but please be kind and keep some special mention to this project for helping you out.

This is only a introduction. The TL language is not that easy. But it’s not that hard either. You’re free to sniff the telethon_generator/ files and learn how to parse other more complex lines, such as flags (to indicate things that may or may not be written at all) and vector‘s.