--- title: Contributing description: You can contribute in various ways. image: https://docs.madelineproto.xyz/favicons/android-chrome-256x256.png --- # Contributing You can contribute in various ways. * [Translation](#translation) * [Contribution guide](#contribution-guide) * [Credits](#credits) ## Translation You can help by translating MadelineProto in your language. Fork github.com/danog/MadelineProto, then run ```php git clone https://github.com/youruser/MadelineProto php translate.php git commit -am 'Added yourlanguage' git push origin master:localization-yourlanguage ``` Then create a pull request from branch `localization-yourlanguage` ## Contribution guide [Here](https://github.com/danog/MadelineProto/projects/1) you can find this project's roadmap. You can use this scheme of the structure of this project to help yourself: ``` build_docs.php - Builds API docs from TL scheme file src/danog/MadelineProto/ MTProtoTools/ AckHandler - Handles acknowledgement of incoming and outgoing mtproto messages AuthKeyHandler - Handles generation of the temporary and permanent authorization keys CallHandler - Handles synchronous calls to mtproto methods or objects, also basic response management (waits until the socket receives a response) Crypt - Handles ige and aes encryption MessageHandler - Handles sending and receiving of mtproto messages (packs TL serialized data with message id, auth key id and encrypts it with Crypt if needed, adds them to the arrays of incoming and outgoing messages) MsgIdHandler - Handles message ids (checks if they are valid, adds them to the arrays of incoming and outgoing messages) ResponseHandler - Handles the content of responses received, service messages, rpc results, errors, and stores them into the response section of the outgoing messages array) SaltHandler - Handles server salts SeqNoHandler - Handles sequence numbers (checks validity) PeerHandler - Manages peers UpdateHandler - Handles updates TL/ Exception - Handles exceptions in the TL namespace TL - Handles TL serialization and deserialization TLConstructor - Stores TL constructors TLMethod - Stores TL methods TLParams - Parses params Wrappers/ Login - Handles logging in as a bot or a user, logging out PeerHandler - Eases getting of input peer objects using usernames or bot API chat ids SettingsManager - Eases updating settings API - Wrapper class that instantiates the MTProto class, sets the error handler, provides a wrapper for calling mtproto methods directly as class submethods, and uses the simplified wrappers from Wrappers/ APIFactory - Provides a wrapper for calling namespaced mtproto methods directly as class submethods Connection - Handles tcp/udp/http connections and wrapping payloads generated by MTProtoTools/MessageHandler into the right message according to the protocol, stores authorization keys, session id and sequence number DataCenter - Handles mtproto datacenters (is a wrapper for Connection classes) DebugTools - Various debugging tools Exception - Handles exceptions and PHP errors RPCErrorException - Handles RPC errors MTProto - Handles initial connection, generation of authorization keys, instantiation of classes, writing of client info Logger - Static logging class prime.py and getpq.py - prime module (python) for p and q generation PrimeModule.php - prime module (php) for p and q generation by wrapping the python module, using wolfram alpha or a built in PHP engine RSA - Handles RSA public keys and signatures Tools - Various tools (positive modulus, string2bin, python-like range) ``` Check out the [Contribution guide](https://github.com/danog/MadelineProto/blob/master/CONTRIBUTING.html) before contributing. Kiao by grizzly ## Credits Created by [Daniil Gentili](https://daniil.it), licensed under AGPLv3, based on [telepy](https://github.com/griganton/telepy_old). While writing this client, I looked at many projects for inspiration and help. Here's the full list: [tgl](https://github.com/tdlib/td) [tgl](https://github.com/vysheng/tgl) [Kotlogram](https://github.com/badoualy/kotlogram) [Webogram](https://github.com/zhukov/webogram) [Telethon](https://github.com/LonamiWebs/Telethon/) Thanks to the devs that contributed to these projects, MadelineProto is now an easy, well-written and complete MTProto client. Next section