4.1 KiB
TelegramSwooleClient
Fast, simple, async php telegram client and parser: MadelineProto + Swoole Server
- Online server for tests (previous version, different request syntax): http://tg.i-c-a.su/?format=json&images=0&url=breakingmash
- My content aggregator: https://i-c-a.su
Features
- Fast async swoole server
- Use as micro-service to access telegram api
- Get any public telegram posts from groups as json
TODO
- RSS output
- flood protection (for use in public)
- logging
Installation
-
Get app_id and app_hash at my.telegram.org
-
Swoole extension required: Install swoole
-
Install this package:
a. Standalone:
- download files from github and extract.
- Run
composer install
inside unpacked directory
b. Existing project:
- 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
-
Install
-
Fill options in .env file (see .env.example)
-
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)
-
Get posts from any open channel
-
Get 10 latests posts from any open channel via GET request:
http://%address%:%port%/json/%channel%
Example:http://127.0.0.1:9503/json/breakingmash
-
Get posts from multiple channels via POST:
Url:
http://127.0.0.1:9503/json/
Headers:
Content-Type: application/json
form-data
andx-www-form-urlencoded
should work, but was not testedBody:
{ "getHistory": [ { "peer":"channel#1259060275" }, { "peer": "breakingmash", "limit": 30, "max_id": 200, } ] }
You can use any other options from https://docs.madelineproto.xyz/API_docs/methods/messages_getHistory.html peer name can be provided in different formats: https://docs.madelineproto.xyz/API_docs/types/InputPeer.html
-
-
Access telegram api directly via simple get requests.
- Url:
http://%address%:%port%/api/%method%/?%param1%=%val%
- All available methods you can find in
src/Client.php
. - Important: All parameters must be passed at strict order!
- Important: api available only from ip in whitelist.
By default it is:
127.0.0.1
You can add client ip in .env file toAPI_CLIENT_WHITELIST
(use json format)
Examples:
- get_info about channel/user:
http://127.0.0.1:9503/api/getInfo/?data[id]=@xtrime
- repost:
http://127.0.0.1:9503/api/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!
- Url:
Contacts
- Telegram: @xtrime
- Email: alexander(at)i-c-a.su