Async PHP client/server API for the telegram MTProto protocol https://docs.madelineproto.xyz
Go to file
Alexander Pankratov 83802fe944
Allow git modules install without ssh key (#810)
(cherry picked from commit 8cb18edc6ee12e8f8a47f6dc7ed9f3ea946bf043)
2020-05-10 19:17:15 +02:00
docs@f49ae1bcb6 Apply misc fixes 2020-04-05 14:57:33 +02:00
examples Update bot.php 2020-05-08 11:53:47 +02:00
legacy/danog/MadelineProto/Server Update copyrights (#767) 2020-02-17 14:13:46 +01:00
schemas@3027150b5e Merge 2020-04-29 14:57:21 +02:00
src Merge 2020-04-29 14:57:21 +02:00
tests Update to layer 110 2020-03-06 13:09:52 +01:00
ton Adding getUrl command in the downloadbot 2020-02-09 17:29:39 +01:00
tools More psalm fixes 2020-04-05 22:22:47 +02:00
.env.example Improve docs 2018-03-30 16:07:54 +00:00
.gitignore Bugfixes 2020-02-05 17:18:22 +01:00
.gitmodules Allow git modules install without ssh key (#810) 2020-05-10 19:17:15 +02:00
.php_cs.dist cs-fix 2019-10-29 22:00:21 +01:00
.travis.yml Provide DNS fallback 2020-02-26 00:11:06 +01:00
CODE_OF_CONDUCT.md Clean up 2019-10-28 22:39:23 +01:00
CONTRIBUTING.md Bugfixes 2017-02-13 13:27:59 +01:00
LICENSE Reorganized code 2016-08-08 18:10:13 +02:00
README.md Update to layer 110 2020-03-06 13:09:52 +01:00
bot.php Clean up 2019-10-28 22:39:23 +01:00
composer.json Further psalm fixes 2020-04-05 15:33:01 +02:00

README.md

MadelineProto, a PHP MTProto telegram client

Created by Daniil Gentili

Do join the official channel, @MadelineProto and the support groups!

Now with Telegram TON blockchain integration!

Approved by Telegram!

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!

Getting started (now fully async!)

<?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->getSelf();

    $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! or run this code in a browser or in a console.

Tip: if you receive an error (or nothing), send us the error message and the MadelineProto.log file that was created in the same directory (if running from a browser).

Examples

You can find examples for nearly every MadelineProto function in

  • magnaluna webradio - Multifeatured Telegram VoIP webradio
  • downloadRenameBot.php - download files by URL and rename Telegram files using this async parallelized bot!
  • bot.php - examples for sending normal messages, downloading any media
  • secret_bot.php - secret chat bot
  • pipesbot.php - examples for creating inline bots and using other inline bots via a userbot

Documentation