mirror of
https://github.com/danog/MadelineProto.git
synced 2024-11-30 09:58:59 +01:00
205 lines
16 KiB
Markdown
205 lines
16 KiB
Markdown
# MadelineProto, a PHP MTProto telegram client
|
|
|
|
Created by <a href="https://daniil.it" target="_blank" rel="noopener">Daniil Gentili</a>
|
|
|
|
Do join the official channel, [@MadelineProto](https://t.me/MadelineProto) and the [support groups](https://t.me/pwrtelegramgroup)!
|
|
|
|
<a href="https://telegram.org/apps" target="_blank" rel="noopener">Approved by Telegram!</a>
|
|
|
|
## What's this?
|
|
|
|
This library can be used to easily interact with Telegram **without** the bot API, just like the official apps.
|
|
|
|
It can login with a phone number (MTProto API), or with a bot token (MTProto API, **no bot API involved!**).
|
|
|
|
[It is now fully async](https://docs.madelineproto.xyz/docs/ASYNC.html)!
|
|
|
|
## Getting started ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html))
|
|
|
|
```php
|
|
<?php
|
|
|
|
if (!file_exists('madeline.php')) {
|
|
copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php');
|
|
}
|
|
include 'madeline.php';
|
|
|
|
$MadelineProto = new \danog\MadelineProto\API('session.madeline');
|
|
$MadelineProto->async(true);
|
|
$MadelineProto->loop(function () use ($MadelineProto) {
|
|
yield $MadelineProto->start();
|
|
|
|
$me = yield $MadelineProto->get_self();
|
|
|
|
$MadelineProto->logger($me);
|
|
|
|
if (!$me['bot']) {
|
|
yield $MadelineProto->messages->sendMessage(['peer' => '@danogentili', 'message' => "Hi!\nThanks for creating MadelineProto! <3"]);
|
|
yield $MadelineProto->channels->joinChannel(['channel' => '@MadelineProto']);
|
|
|
|
try {
|
|
yield $MadelineProto->messages->importChatInvite(['hash' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg']);
|
|
} catch (\danog\MadelineProto\RPCErrorException $e) {
|
|
$MadelineProto->logger($e);
|
|
}
|
|
|
|
yield $MadelineProto->messages->sendMessage(['peer' => 'https://t.me/joinchat/Bgrajz6K-aJKu0IpGsLpBg', 'message' => 'Testing MadelineProto!']);
|
|
}
|
|
yield $MadelineProto->echo('OK, done!');
|
|
});
|
|
```
|
|
|
|
[Try this code now!](https://try.madelineproto.xyz) or run this code in a browser or in a console.
|
|
|
|
|
|
Tip: if you receive an error (or nothing), [send us](https://t.me/pwrtelegramgroup) the error message and the `MadelineProto.log` file that was created in the same directory (if running from a browser).
|
|
|
|
## Documentation
|
|
|
|
* [Async](https://docs.madelineproto.xyz/docs/ASYNC.html)
|
|
* [Usage](https://docs.madelineproto.xyz/docs/ASYNC.html#usage)
|
|
* [Enabling the MadelineProto async API](https://docs.madelineproto.xyz/docs/ASYNC.html#enabling-the-madelineproto-async-api)
|
|
* [Using the MadelineProto async API](https://docs.madelineproto.xyz/docs/ASYNC.html#using-the-madelineproto-async-api)
|
|
* [Async in event handler](https://docs.madelineproto.xyz/docs/ASYNC.html#async-in-event-handler)
|
|
* [Async in callback handler](https://docs.madelineproto.xyz/docs/ASYNC.html#async-in-callback-handler)
|
|
* [Wrapped async](https://docs.madelineproto.xyz/docs/ASYNC.html#wrapped-async)
|
|
* [Multiple async](https://docs.madelineproto.xyz/docs/ASYNC.html#multiple-async)
|
|
* [ArrayAccess async](https://docs.madelineproto.xyz/docs/ASYNC.html#arrayaccess-async)
|
|
* [Ignored async](https://docs.madelineproto.xyz/docs/ASYNC.html#ignored-async)
|
|
* [Blocking async](https://docs.madelineproto.xyz/docs/ASYNC.html#blocking-async)
|
|
* [MadelineProto and AMPHP async APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-and-amphp-async-apis)
|
|
* [Helper methods](https://docs.madelineproto.xyz/docs/ASYNC.html#helper-methods)
|
|
* [Async sleep](https://docs.madelineproto.xyz/docs/ASYNC.html#async-sleep-does-not-block-the-main-thread)
|
|
* [Async readline](https://docs.madelineproto.xyz/docs/ASYNC.html#async-readline-does-not-block-the-main-thread)
|
|
* [Async echo](https://docs.madelineproto.xyz/docs/ASYNC.html#async-echo-does-not-block-the-main-thread)
|
|
* [MadelineProto artax HTTP client](https://docs.madelineproto.xyz/docs/ASYNC.html#madelineproto-artax-http-client)
|
|
* [Async forking](https://docs.madelineproto.xyz/docs/ASYNC.html#async-forking-does-green-thread-forking)
|
|
* [Async flock](https://docs.madelineproto.xyz/docs/ASYNC.html#async-flock)
|
|
* [Combining async operations](https://docs.madelineproto.xyz/docs/ASYNC.html#combining-async-operations)
|
|
* [MadelineProto async loop APIs](https://docs.madelineproto.xyz/docs/ASYNC.html#async-loop-apis)
|
|
* [Loop](https://docs.madelineproto.xyz/docs/ASYNC.html#loop)
|
|
* [ResumableLoop](https://docs.madelineproto.xyz/docs/ASYNC.html#resumableloop)
|
|
* [SignalLoop](https://docs.madelineproto.xyz/docs/ASYNC.html#signalloop)
|
|
* [ResumableSignalLoop](https://docs.madelineproto.xyz/docs/ASYNC.html#resumablesignalloop)
|
|
* [GenericLoop](https://docs.madelineproto.xyz/docs/ASYNC.html#genericloop)
|
|
* [Creating a client](https://docs.madelineproto.xyz/docs/CREATING_A_CLIENT.html)
|
|
* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html)
|
|
* [Getting permission to use the telegram API](https://docs.madelineproto.xyz/docs/LOGIN.html#getting-permission-to-use-the-telegram-api)
|
|
* [Automatic](https://docs.madelineproto.xyz/docs/LOGIN.html#automatic-now-fully-async)
|
|
* [Manual (user)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-user)
|
|
* [API ID](https://docs.madelineproto.xyz/docs/LOGIN.html#api-id)
|
|
* [Manual (bot)](https://docs.madelineproto.xyz/docs/LOGIN.html#manual-bot)
|
|
* [Logout](https://docs.madelineproto.xyz/docs/LOGIN.html#logout)
|
|
* [Changing 2FA password](https://docs.madelineproto.xyz/docs/LOGIN.html#changing-2fa-password)
|
|
* [Features](https://docs.madelineproto.xyz/docs/FEATURES.html)
|
|
* [Requirements](https://docs.madelineproto.xyz/docs/REQUIREMENTS.html)
|
|
* [Installation](https://docs.madelineproto.xyz/docs/INSTALLATION.html)
|
|
* [Simple](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple)
|
|
* [Simple (manual)](https://docs.madelineproto.xyz/docs/INSTALLATION.html#simple-manual)
|
|
* [Composer from scratch](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-scratch)
|
|
* [Composer from existing project](https://docs.madelineproto.xyz/docs/INSTALLATION.html#composer-from-existing-project)
|
|
* [Handling updates (new messages)](https://docs.madelineproto.xyz/docs/UPDATES.html)
|
|
* [Self-restart on webhosts](https://docs.madelineproto.xyz/docs/UPDATES.html#self-restart-on-webhosts)
|
|
* [Async Event driven](https://docs.madelineproto.xyz/docs/UPDATES.html#async-event-driven)
|
|
* [Multi-account: Async Combined Event driven update handling](https://docs.madelineproto.xyz/docs/UPDATES.html#async-combined-event-driven)
|
|
* [Async Callback](https://docs.madelineproto.xyz/docs/UPDATES.html#async-callback)
|
|
* [Noop (default)](https://docs.madelineproto.xyz/docs/UPDATES.html#noop)
|
|
* [Fetch all updates from the beginning](https://docs.madelineproto.xyz/docs/UPDATES.html#fetch-all-updates-from-the-beginning)
|
|
* [Settings](https://docs.madelineproto.xyz/docs/SETTINGS.html)
|
|
* [Getting info about the current user](https://docs.madelineproto.xyz/docs/SELF.html)
|
|
* [Exceptions](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html)
|
|
* [List of exception types](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#list-of-exception-types)
|
|
* [Pretty TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#pretty-tl-trace)
|
|
* [Getting the TL trace](https://docs.madelineproto.xyz/docs/EXCEPTIONS.html#getting-the-tl-trace)
|
|
* [Avoiding FLOOD_WAITs](https://docs.madelineproto.xyz/docs/FLOOD_WAIT.html)
|
|
* [Logging](https://docs.madelineproto.xyz/docs/LOGGING.html)
|
|
* [Telegram VoIP phone calls](https://docs.madelineproto.xyz/docs/CALLS.html)
|
|
* [Requesting a call](https://docs.madelineproto.xyz/docs/CALLS.html#requesting-a-call)
|
|
* [Playing mp3 files](https://docs.madelineproto.xyz/docs/CALLS.html#playing-mp3-files)
|
|
* [Playing streams](https://docs.madelineproto.xyz/docs/CALLS.html#playing-streams)
|
|
* [Changing audio quality](https://docs.madelineproto.xyz/docs/CALLS.html#changing-audio-quality)
|
|
* [Putting it all together](https://docs.madelineproto.xyz/docs/CALLS.html#putting-it-all-together)
|
|
* [Accepting calls](https://docs.madelineproto.xyz/docs/CALLS.html#accepting-calls)
|
|
* [Uploading and downloading files](https://docs.madelineproto.xyz/docs/FILES.html)
|
|
* [Uploading & sending files](https://docs.madelineproto.xyz/docs/FILES.html#sending-files)
|
|
* [Security notice](https://docs.madelineproto.xyz/docs/FILES.html#security-notice)
|
|
* [Photos](https://docs.madelineproto.xyz/docs/FILES.html#inputmediauploadedphoto)
|
|
* [Documents](https://docs.madelineproto.xyz/docs/FILES.html#inputmediauploadeddocument)
|
|
* [Documents](https://docs.madelineproto.xyz/docs/FILES.html#documentattributefilename-to-send-a-document)
|
|
* [Photos as documents](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeimagesize-to-send-a-photo-as-document)
|
|
* [GIFs](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeanimated-to-send-a-gif)
|
|
* [Videos](https://docs.madelineproto.xyz/docs/FILES.html#documentattributevideo-to-send-a-video)
|
|
* [Audio & Voice](https://docs.madelineproto.xyz/docs/FILES.html#documentattributeaudio-to-send-an-audio-file)
|
|
* [Uploading files](https://docs.madelineproto.xyz/docs/FILES.html#uploading-files)
|
|
* [Bot API file IDs](https://docs.madelineproto.xyz/docs/FILES.html#bot-api-file-ids)
|
|
* [Reusing uploaded files](https://docs.madelineproto.xyz/docs/FILES.html#reusing-uploaded-files)
|
|
* [Downloading files](https://docs.madelineproto.xyz/docs/FILES.html#downloading-files)
|
|
* [Extracting download info](https://docs.madelineproto.xyz/docs/FILES.html#extracting-download-info)
|
|
* [Downloading profile pictures](https://docs.madelineproto.xyz/docs/FILES.html#downloading-profile-pictures)
|
|
* [Download to directory](https://docs.madelineproto.xyz/docs/FILES.html#download-to-directory)
|
|
* [Download to file](https://docs.madelineproto.xyz/docs/FILES.html#download-to-file)
|
|
* [Download to browser (streaming)](https://docs.madelineproto.xyz/docs/FILES.html#download-to-browser-with-streams)
|
|
* [Getting progress](https://docs.madelineproto.xyz/docs/FILES.html#getting-progress)
|
|
* [Getting info about chats](https://docs.madelineproto.xyz/docs/CHAT_INFO.html)
|
|
* [Full chat info with full list of participants](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_pwr_chat-now-fully-async)
|
|
* [Full chat info](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_full_info-now-fully-async)
|
|
* [Reduced chat info (very fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_info-now-fully-async)
|
|
* [Just the chat ID (extremely fast)](https://docs.madelineproto.xyz/docs/CHAT_INFO.html#get_id-now-fully-async)
|
|
* [Getting all chats (dialogs)](https://docs.madelineproto.xyz/docs/DIALOGS.html)
|
|
* [Dialog list](https://docs.madelineproto.xyz/docs/DIALOGS.html#get_dialogs-now-fully-async)
|
|
* [Full dialog info](https://docs.madelineproto.xyz/docs/DIALOGS.html#get_full_dialogs-now-fully-async)
|
|
* [Inline buttons ([now fully async!](https://docs.madelineproto.xyz/docs/ASYNC.html))](https://docs.madelineproto.xyz/docs/INLINE_BUTTONS.html)
|
|
* [Secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html)
|
|
* [Requesting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#requesting-secret-chats-now-fully-async)
|
|
* [Accepting secret chats](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#accepting-secret-chats-now-fully-async)
|
|
* [Checking secret chat status](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#checking-secret-chat-status-now-fully-async)
|
|
* [Sending secret messages](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html#sending-secret-messages-now-fully-async)
|
|
* [Lua binding](https://docs.madelineproto.xyz/docs/LUA.html)
|
|
* [Using a proxy](https://docs.madelineproto.xyz/docs/PROXY.html)
|
|
* [How to set a proxy](https://docs.madelineproto.xyz/docs/PROXY.html#how-to-set-a-proxy)
|
|
* [Multiple proxies with automatic switch](https://docs.madelineproto.xyz/docs/PROXY.html#multiple-proxies-with-automatic-switch)
|
|
* [Use pre-built MTProxy](https://docs.madelineproto.xyz/docs/PROXY.html#mtproxy)
|
|
* [Use pre-built Socks5 proxy](https://docs.madelineproto.xyz/docs/PROXY.html#socks5-proxy)
|
|
* [Use pre-built HTTP proxy](https://docs.madelineproto.xyz/docs/PROXY.html#http-proxy)
|
|
* [Build your own proxy](https://docs.madelineproto.xyz/docs/PROXY.html#build-your-proxy)
|
|
* [Using methods](https://docs.madelineproto.xyz/docs/USING_METHODS.html)
|
|
* [FULL API Documentation with descriptions](https://docs.madelineproto.xyz/API_docs/methods/)
|
|
* [Logout](https://docs.madelineproto.xyz/logout.html)
|
|
* [Login](https://docs.madelineproto.xyz/docs/LOGIN.html)
|
|
* [Change 2FA password](https://docs.madelineproto.xyz/update_2fa.html)
|
|
* [Get all chats, broadcast a message to all chats](https://docs.madelineproto.xyz/docs/DIALOGS.html)
|
|
* [Get the full participant list of a channel/group/supergroup](https://docs.madelineproto.xyz/get_pwr_chat.html)
|
|
* [Get full info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_full_info.html)
|
|
* [Get info about a user/chat/supergroup/channel](https://docs.madelineproto.xyz/get_info.html)
|
|
* [Get info about the currently logged-in user](https://docs.madelineproto.xyz/get_self.html)
|
|
* [Upload or download files up to 1.5 GB](https://docs.madelineproto.xyz/docs/FILES.html)
|
|
* [Make a phone call and play a song](https://docs.madelineproto.xyz/docs/CALLS.html)
|
|
* [Create a secret chat bot](https://docs.madelineproto.xyz/docs/SECRET_CHATS.html)
|
|
* [Peers](https://docs.madelineproto.xyz/docs/USING_METHODS.html#peers)
|
|
* [Files](https://docs.madelineproto.xyz/docs/FILES.html)
|
|
* [Secret chats](https://docs.madelineproto.xyz/docs/USING_METHODS.html#secret-chats)
|
|
* [Entities (Markdown & HTML)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#entities)
|
|
* [reply_markup (keyboards & inline keyboards)](https://docs.madelineproto.xyz/docs/USING_METHODS.html#reply_markup)
|
|
* [bot API objects](https://docs.madelineproto.xyz/docs/USING_METHODS.html#bot-api-objects)
|
|
* [No result](https://docs.madelineproto.xyz/docs/USING_METHODS.html#no-result)
|
|
* [Queues](https://docs.madelineproto.xyz/docs/USING_METHODS.html#queues)
|
|
* [Multiple method calls](https://docs.madelineproto.xyz/docs/USING_METHODS.html#multiple-method-calls)
|
|
* [Contributing](https://docs.madelineproto.xyz/docs/CONTRIB.html)
|
|
* [Translation](https://docs.madelineproto.xyz/docs/CONTRIB.html#translation)
|
|
* [Contribution guide](https://docs.madelineproto.xyz/docs/CONTRIB.html#contribution-guide)
|
|
* [Credits](https://docs.madelineproto.xyz/docs/CONTRIB.html#credits)
|
|
* [Web templates for `$MadelineProto->start()`](https://docs.madelineproto.xyz/docs/TEMPLATES.html)
|
|
|
|
## Very complex and complete examples
|
|
|
|
You can find examples for nearly every MadelineProto function in
|
|
* [`tests/testing.php`](https://github.com/danog/MadelineProto/blob/master/tests/testing.php) - examples for making/receiving calls, making secret chats, sending secret chat messages, videos, audios, voice recordings, gifs, stickers, photos, sending normal messages, videos, audios, voice recordings, gifs, stickers, photos.
|
|
* [`bot.php`](https://github.com/danog/MadelineProto/blob/master/bot.php) - examples for sending normal messages, downloading any media
|
|
* [`secret_bot.php`](https://github.com/danog/MadelineProto/blob/master/secret_bot.php) - secret chat bot
|
|
* [`magna.php`](https://github.com/danog/MadelineProto/blob/master/magna.php) - examples for receiving calls
|
|
* [`userbots/pipesbot.php`](https://github.com/danog/MadelineProto/blob/master/userbots/pipesbot.php) - examples for creating inline bots and using other inline bots via a userbot
|
|
* [`userbots/MadelineProto_bot.php`](https://github.com/danog/MadelineProto/blob/master/userbots/MadelineProto_bot.php) - Multi-function bot
|
|
* [`userbots/pwrtelegram_debug_bot`](https://github.com/danog/MadelineProto/blob/master/userbots/pwrtelegram_debug_bot.php) - Multi-function bot
|
|
|
|
|