sysbot / tgscraper
Utility to extract scheme from Telegram Bot API webpage.
Requires
- php: >=8.0
- composer-runtime-api: ^2.0
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- nette/php-generator: ^4.0
- psr/log: ^1.1
- symfony/console: ^6.0
- symfony/yaml: ^6.0
- voku/simple_html_dom: ^4.7
Requires (Dev)
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.15
Suggests
- sysbot/tgscraper-cache: To speed up schema fetching and generation.
README
A PHP library used to extract JSON data (and auto-generate PHP classes) from Telegram bot API documentation page.
Changelog
Interested in recent changes? Have a look here!
Installation
Install the library with composer:
$ composer require sysbot/tgscraper --prefer-stable
(Optional) Install the cache package:
$ composer require sysbot/tgscraper-cache
Using from command line
Once installed, you can use the CLI to interact with the library.
For basic help and command list:
$ vendor/bin/tgscraper help
JSON
Extract the latest schema in a human-readable JSON:
$ vendor/bin/tgscraper app:export-schema --readable botapi.json
Or, if you want a Postman-compatible JSON (thanks to davtur19):
$ vendor/bin/tgscraper app:export-schema --postman botapi_postman.json
YAML
Extract the latest schema in YAML format:
$ vendor/bin/tgscraper app:export-schema --yaml botapi.yaml
OpenAPI
Extract the latest OpenAPI schema in JSON format:
$ vendor/bin/tgscraper app:export-schema --openapi botapi_openapi.json
Or, if you prefer YAML:
$ vendor/bin/tgscraper app:export-schema --openapi --yaml botapi_openapi.yaml
Stubs
Note: since Telegram may change the page format at any time, do NOT rely on the automagically generated stubs from this library, ALWAYS review the code!
TGScraper can also generate class stubs that you can use in your library. A sample implementation is available in the Sysbot Telegram module.
Create stubs in the out/
directory using Sysbot\Telegram
as namespace prefix:
$ vendor/bin/tgscraper app:create-stubs --namespace-prefix "Sysbot\Telegram" out
All versions
If you want to generate all schemas and stubs for every Bot API version, you can!
Here's an example on how to export everything to the out/
directory, with schemas in human-readable format and using Sysbot\Telegram
as namespace prefix for the stubs:
$ vendor/bin/tgscraper app:dump-schemas -r --namespace-prefix "Sysbot\Telegram" out
Custom format
If you're interested in the custom format generated by TGScraper, you can find its schema here.