Go to file
Alexander Pankratov 38e8bef31d Indentation fix
2019-02-23 21:26:15 +03:00
src Indentation fix 2019-02-23 21:26:15 +03:00
.env.example Big Refactor. Now return only json. 2019-02-01 17:28:50 +03:00
.gitignore Readme update & new api methods 2019-01-23 15:30:58 +03:00
bootstrap.php Update for use in external projects via composer. 2019-01-21 22:37:24 +03:00
composer.json Update vendor 2019-02-14 00:54:37 +03:00
composer.lock Update vendor 2019-02-23 21:12:14 +03:00
config.php Config update 2019-02-04 23:19:40 +03:00
LICENSE Initial commit 2018-12-24 14:48:21 +03:00
README.md Readme & vendor update 2019-02-03 21:17:38 +03:00
server.php Server config remove old code 2019-02-04 23:27:39 +03:00

TelegramSwooleClient

Fast, simple, async php telegram client and parser: MadelineProto + Swoole Server

Features

  • Fast async swoole server
  • Use as micro-service to access telegram api
  • Get any public telegram posts from groups as json

Installation

  1. Get app_id and app_hash at my.telegram.org

  2. Swoole extension required: Install swoole

  3. Install this package:

    a. Standalone:

    1. download files from github and extract.
    2. Run composer install inside unpacked directory

    b. Existing project:

    1. Add following into your project's composer.json
    "repositories": [
        {
          "type": "git",
          "url": "https://github.com/danog/phpseclib"
        },
        {
           "type": "git",
           "url": "https://github.com/xtrime-ru/TelegramSwooleClient.git"
        }
    ],
    "require": {
        "xtrime-ru/telegramswooleclient": "dev-master",
        "amphp/dns": "dev-master#861cc857b1ba6e02e8a7439c30403682785fce96 as 0.9.9",
        "amphp/file": "dev-master#5a69fca406ac5fd220de0aa68c887bc8046eb93c as 0.3.3",
        "amphp/uri": "dev-master#f3195b163275383909ded7770a11d8eb865cbc86 as 0.1.3"
    }
    

Usage

  1. Install

  2. Fill options in .env file (see .env.example)

  3. Run server/parser

    php server.php [--help] [-a|--address=127.0.0.1] [-p|--port=9503]
    
    Options:
    
            --help      Show this message
        -a  --address   Server ip (optional) (example: 127.0.0.1 or 0.0.0.0 to listen all hosts)
        -p  --port      Server port (optional) (example: 9503)
    
    Also all options can be set in .env file (see .env.example)
    
  4. Access telegram api directly via simple get requests.
    Rules:

    • All methods from MadelineProto supported: Methods List
    • Url: http://%address%:%port%/api/%class%.%method%/?%param1%=%val%
    • Important: api available only from ip in whitelist. By default it is: 127.0.0.1 You can add client ip in .env file to API_CLIENT_WHITELIST (use json format)
    • If method is inside class (messages, contacts and etc.) use '.' to separate class from method: http://127.0.0.1:9503/api/contacts.getContacts
    • If method requires array of values, use any name of array, for example 'data': ?data[peer]=@xtrime&data[message]=Hello!. Order of parameters does't matter in this case.
    • If method requires one or multiple separate parameters (not inside array) then pass parameters with any names but in strict order: http://127.0.0.1:9503/api/get_info/?id=@xtrime or http://127.0.0.1:9503/api/get_info/?abcd=@xtrime works the same

    Examples:

    • get_info about channel/user: http://127.0.0.1:9503/api/get_info/?id=@xtrime
    • get_info about currect account: http://127.0.0.1:9503/api/get_self
    • repost: http://127.0.0.1:9503/api/messages.forwardMessages/?data[from_peer]=@xtrime&data[to_peer]=@xtrime&data[id]=1234
    • get messages from channel/user: http://127.0.0.1:9503/api/getHistory/?data[peer]=@breakingmash&data[limit]=10
    • search: http://127.0.0.1:9503/api/searchGlobal/?data[q]=Hello%20World&data[limit]=10
    • sendMessage: http://127.0.0.1:9503/api/sendMessage/?data[peer]=@xtrime&data[message]=Hello!
    • copy message from one channel to other (not repost): http://127.0.0.1:9503/api/copyMessages/?data[from_peer]=@xtrime&data[to_peer]=@xtrime&data[id][0]=1

Contacts

  • Telegram: @xtrime
  • Email: alexander(at)i-c-a.su