andrew-gos / telegram-bot
Advanced strictly typed Telegram Bot Library
Requires
- php: >=8.2
- ext-ctype: *
- ext-curl: *
- andrew-gos/class-builder: ^1.3.3
- andrew-gos/serializer: ^1.3
- giggsey/libphonenumber-for-php: ^9.0
- psr/container: ^2.0
- psr/event-dispatcher: ^1.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.87
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^11.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
๐ Overview
This is a powerful, strictly-typed PHP library for building Telegram bots. It fully leverages the capabilities of PHP 8.2+ and modern programming standards to make your development process fast, reliable, and enjoyable.
The library provides a complete toolset for interacting with the Telegram Bot API, allowing you to focus on your bot's logic rather than on
low-level implementation details. At its core is a flexible update processing kernel built on HandlerGroup, Checker, and Middleware, ensuring
exceptional modularity and extensibility.
โจ Key Features
- ๐ฏ Full API Coverage: Supports all methods and types of the Telegram Bot API (currently version 10.3).
- ๐ Strict Typing: Maximum code reliability and excellent IDE support.
- ๐งฉ Modern Architecture: A flexible update handling system using
HandlerGroup,Checker, andMiddleware. - ๐ Extensibility: Easily integrate your own logic through plugins and middleware.
- ๐ค PSR Compliant: Effortless integration with any modern framework.
- ๐งช Under Active Test Development: 891+ tests, 1300+ assertions. Core components + Entity deserialization + API via HTTP mock. Full coverage strategy โ see Coverage Strategy.
๐ฆ Installation
To install the library, use Composer:
composer require andrew-gos/telegram-bot
๐ Versioning & Backward Compatibility
The library follows Semantic Versioning, but the guarantee is split by layer:
- Bot API mirror layer (
src/Entity,src/Request,src/Response,src/Enum). These classes are a strict 1:1 mirror of the Telegram Bot API. Fields and parameters removed by Telegram itself are removed in the library in the same (minor) release and are always listed in theRemovedsection of the CHANGELOG.md, together with a migration recipe. - Library's own API layer (
Api/ApiInterface,Telegram,Kernel,ValueObject,Serializer,Http). This layer follows strict SemVer: removals and incompatible changes are only introduced in a major release.
Release tags are published without a v prefix (e.g. 4.9.0). The only v-prefixed tag (v4.8.0) is a historical accident and will not be renamed.
๐ Documentation
To get started and explore the library's features in-depth, please refer to the following sections:
| Section | Description |
|---|---|
| ๐ Basic Usage (BASIC.md) | Start here. A step-by-step guide to creating your first bot and handling commands. |
| โ๏ธ Advanced Usage (ADVANCED.md) | Learn about Middleware, Plugins, custom Checkers, and other powerful tools. |
| ๐งฉ Framework Integration | |
| โข Symfony (SYMFONY.md) | A guide to setting up the library as a service in Symfony applications. |
| โข Yii2 (YII2.md) | A guide for integrating with the Yii2 framework's DI container. |
๐ค Contributing
Contributions are welcome and greatly appreciated! This project follows the standard GitHub fork & pull request workflow.
Reporting Bugs and Requesting Features
- Please use the GitHub Issues tracker to report bugs or request new features.
- When reporting a bug, please provide a clear description, steps to reproduce it, and your environment details (PHP version, library version).
- For feature requests, describe the problem you're trying to solve and your proposed solution.
Submitting Code Changes
- Fork the repository on GitHub.
- Create a new branch for your changes (e.g.
fix/message-parsing-error). - Make your changes. Ensure your code adheres to the project's coding style.
- Run the code style fixer. This project uses
php-cs-fixer. You can apply the style rules by running:composer php-cs-fix
- Add or update tests. Your pull request should include tests that cover your changes.
- Submit a Pull Request to the
masterbranch with a clear description of your changes.
๐ License
This project is licensed under the MIT License. See the LICENSE file for details.