98 lines
4.5 KiB
Markdown
98 lines
4.5 KiB
Markdown
---
|
|
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.
|
|
|
|
<a href="https://docs.madelineproto.xyz/docs/TEMPLATES.html">Next section</a> |