Go to file
Alexander Pankratov 76b5b67d96 Client start update
2019-06-09 20:48:26 +03:00
src Client start update 2019-06-09 20:48:26 +03:00
.env.example Update logger level 2019-05-15 02:48:55 +03:00
.gitignore Readme update & new api methods 2019-01-23 15:30:58 +03:00
bootstrap.php Update readme & composer & name 2019-06-09 20:47:46 +03:00
composer.json Update of madelineProto 2019-06-09 20:48:26 +03:00
composer.lock Vendor update 2019-06-09 20:48:26 +03:00
config.php WIP: Initial support of madelineProto async mode 2019-06-09 20:48:26 +03:00
LICENSE Initial commit 2018-12-24 14:48:21 +03:00
README.md Update readme & composer & name 2019-06-09 20:47:46 +03:00
server.php Update readme & composer & name 2019-06-09 20:47:46 +03:00

TelegramApiServer

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

Features

  • Fast async swoole server
  • Full access to telegram api: bot and user

Example Architecture Proposed Architecture

Installation

  1. Swoole extension required: Install swoole

  2. composer install to install required libs

  3. Create .env from .env.example

  4. Fill variables in .env

  5. Fill app_id and app_hash from my.telegram.org Or leave blank and MadelineProto will try to generate on start.

    Optional:

  6. Use supervisor to monitor and restart swoole servers. Example of /etc/supervisor/conf.d/telegram_rss.conf:

    [program:telegram_client]
    command=/usr/bin/php /home/admin/web/tg.i-c-a.su/TelegramSwooleClient/server.php
    numprocs=1
    directory=/home/admin/web/tg.i-c-a.su/TelegramSwooleClient/
    autostart=true
    autorestart=true
    stdout_logfile=none
    redirect_stderr=true
    

Usage

  1. 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)
        -p  --port      Server port (optional) (example: 9503)
        -s  --session   Prefix for session file (optional) (example: xtrime)
    
    Also  options can be set in .env file (see .env.example)
    
  2. 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

Donations

  • BTC: 1BE1nitXgEAxg7A5tgec67ucNryQwusoiP
  • ETH: 0x0e2d369E28DCA2336803b9dE696eCDa50ff61e27