Go to file
2020-01-12 02:11:18 +03:00
src CombinedApi Refactoring 2020-01-12 02:11:18 +03:00
.env.example Small fixes 2019-12-08 15:46:54 +03:00
.gitignore Update composer. Get madeline via custom loader. 2019-12-03 02:33:40 +03:00
bootstrap.php Dotenv upgrade to v4 2020-01-01 01:44:44 +03:00
composer.json Increase required version of php (madelineProto requirement) 2020-01-06 01:37:29 +03:00
composer.lock CombinedApi Support 2020-01-11 23:53:58 +03:00
config.php Composer update & disable old updates handle 2019-12-29 01:23:46 +03:00
LICENSE Initial commit 2018-12-24 14:48:21 +03:00
README.md CombinedApi Refactoring 2020-01-12 02:11:18 +03:00
server.php CombinedApi Support 2020-01-11 23:53:58 +03:00

TelegramApiServer

Fast, simple, async php telegram api server: MadelineProto and AmpPhp Server

Features

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

Example Architecture Proposed Architecture

Installation

  1. Git clone this repo

  2. composer install -o --no-dev to install required libs

  3. Create .env from .env.example

  4. Fill variables in .env

  5. Get app_id and app_hash at my.telegram.org or leave blank. MadelineProto will generate them on start.

    Optional:

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

    [program:telegram_api_server]
    command=/usr/bin/php /home/admin/web/tg.i-c-a.su/TelegramApiServer/server.php
    numprocs=1
    directory=/home/admin/web/tg.i-c-a.su/TelegramApiServer/
    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). 
                        Multiple sessions can be used via CombinedAPI. Example "--session=user --session=bot"
                        If running multiple sessions, then "session" parameter must be provided with every request.
    
    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/[%session%/]%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/getInfo/?id=@xtrime or http://127.0.0.1:9503/api/getInfo/?abcd=@xtrime works the same

    • CombinedAPI (multiple sessions) support.

      If running with multiple sessions use include 'session' in path, before method, to define which session to use for request:

      • php server.php --session=session --session=bot --session=xtrime
      • http://127.0.0.1:9503/api/xtrime/getSelf
      • http://127.0.0.1:9503/api/bot/getSelf
      • http://127.0.0.1:9503/api/session/getSelf

      Each session is store in {$session}.madeline file in root folder of library.

    Examples:

    • get_info about channel/user: http://127.0.0.1:9503/api/getInfo/?id=@xtrime
    • get_info about currect account: http://127.0.0.1:9503/api/getSelf
    • 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
    • get messages with text in HTML: http://127.0.0.1:9503/api/getHistoryHtml/?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