mirror of
https://github.com/danog/TelegramApiServer.git
synced 2024-11-26 20:04:45 +01:00
src | ||
.env.example | ||
.gitignore | ||
bootstrap.php | ||
composer.json | ||
composer.lock | ||
config.php | ||
LICENSE | ||
README.md | ||
server.php |
TelegramSwooleClient
Fast, simple, async php telegram client and parser: MadelineProto and Swoole Server
- Online server for tests (previous version, different request syntax): https://tg.i-c-a.su
- My content aggregator: https://i-c-a.su
- Im using this microservice in: my TelegramRSS microservice
Features
- Fast async swoole server
- Use as micro-service to access telegram api
- Get any public telegram posts from groups as json
Installation
-
Get app_id and app_hash at my.telegram.org
-
Swoole extension required: Install swoole
-
composer install
to install required libs -
Create .env from .env.example
-
Fill variables in .env
Optional:
-
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
-
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)
-
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 toAPI_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
orhttp://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