PHPackages                             fsa/telegram-bot-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. fsa/telegram-bot-api

ActiveLibrary[API Development](/categories/api)

fsa/telegram-bot-api
====================

Telegram Bot API

v0.5(1y ago)0631GPL-3.0-or-laterPHPPHP ^8.2

Since Mar 31Pushed 1y ago1 watchersCompare

[ Source](https://github.com/fsa/php-telegram-bot-api)[ Packagist](https://packagist.org/packages/fsa/telegram-bot-api)[ Fund](https://boosty.to/tavdainfo)[ RSS](/packages/fsa-telegram-bot-api/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (8)Versions (10)Used By (0)

Обёртка для Telegram Bot API на PHP
===================================

[](#обёртка-для-telegram-bot-api-на-php)

Данная библиотека может использоваться для упрощения взаимодействия с Telegram Bot API - . С её помощью можно формировать запросы к API и передавать на сервер, а также поддерживает возможность обработки Webhook.

Данная обёртка может работать как в простых проектах на PHP, так и в составе фреймворков. При использовании библиотеки с фреймворком необходимо создать следующие сервисы (по мере необходимости):

1. TelegramBotApi -- генератор объектов для запроса к API;
2. TelegramBotHttpClient -- сервис по передаче запросов к API, для работы требуется composer пакет `symfony/http-client`;
3. TelegramBotWebhook -- вспомогательный сервис для обработки Webhook. Для его работы необходимы пакеты `symfony/serializer` и `symfony/http-foundation`

Пример конфигурации сервисов в Symfony, файл `config/services.yaml`:

```
    FSA\Telegram\TelegramBotApi:

    FSA\Telegram\TelegramBotHttpClient:
        bind:
            $token: '%env(resolve:TELEGRAM_BOT_API_TOKEN)%'

    FSA\Telegram\TelegramBotWebhook:
        bind:
            $secret: '%env(resolve:TELEGRAM_BOT_API_SECRET)%'
```

Установка
---------

[](#установка)

Установите библиотеку с помощью composer:

```
composer require fsa/telegram-bot-api
```

Создание сообщения для запроса на сервер
----------------------------------------

[](#создание-сообщения-для-запроса-на-сервер)

Для создания запросов к Telegram используется класс TelegramBotApi, который содержит конструкторы методов объектов, необходимых для этого запроса.

Доступные через библиотеку методы API:

- getFile;
- getMe;
- getUpdates;
- getWebhookInfo;
- sendAnimation;
- sendAudio;
- sendDice;
- sendDocument;
- sendLocation;
- sendMessage;
- sendPhoto;
- sendSticker;
- sendVideo;
- setWebhook.

Создать нужный запрос можно с помощью класса `TelegramBotApi` вызвав соответствующий метод. Методы в качестве аргументов требуют соответствующие обязательные параметры для выбранного запроса. Для установки необязательных аргументов можно использовать цепочки методов, например:

```
$api = new FSA\Telegram\TelegramBotApi;
$message = $api->sendDice($chat_id, 1)->setDisableNotification()->setProtectContent();
```

Если в запросе необходимо прикрепить файл, то сделать это можно с помощью класса `CURLFile`, который можно создать, в том числе, через процедурный стиль:

```
$file = curl_file_create(realpath('my_photo.jpg'));
$message = $api->sendPhoto($chat_id, $file);
```

Выполнение запросов на сервер
-----------------------------

[](#выполнение-запросов-на-сервер)

Для выполнения запросов на сервер используется http клиент Symfony. При необходимости можно задать для него дополнительные настройки, например, указать прокси. Запросы на сервер выполняются с помощью методов класса `FSA\Telegram\TelegramBotHttpClient`: `httpGet()`, `httpPost()` или `httpPostJson()`. При создании экземпляра класса ему необходимо передать токен доступа и, при необходимости, URL сервера, если не не пользуетесь своим локальным сервером вместо `api.telegram.org`.

```
$api = new FSA\Telegram\TelegramBotApi;
$query = new FSA\Telegram\TelegramBotHttpClient(Symfony\Component\HttpClient\HttpClient::create(), 'TOKEN');
// Создание метода sendMessage
$message = $api->sendMessage($chat_id, "Привет");
// Передача запроса на сервер
$telegram_bot_query->httpPostJson($message);
```

Любой объект для методов API реализует интерфейс `TelegramBotMethodInterface`:

- `getMethodName()` — позволяет получить имя метода API;
- `getRequestParameters()` — параметры запроса в виде массива.

Методы, которые осуществляют отправку сообщений, также реализуют интерфейс `TelegramBotSendMethodInterface`, который, в дополнении к `TelegramBotMethodInterface` также предоставляет доступ к сессерам, которые присутствуют в любом методе с отправкой сообщения, например, `setChatId()` и другие.

Работа с WebHook
----------------

[](#работа-с-webhook)

`TelegramBotWebhook` облегчает обработку запросов и написан для использования с фреймворком Symfony. Экземпляр класса может быть извлечён из контейнера путём добавления его в параметры метода контроллера.

Метод `isSecretTokenValid()` проверяет, что секретный токен, указанный заголовке запроса, верный.

Метод `dispatch($eventDispatcher, $callable)` запускает обработку событий и возвращает ответ на запрос. Имеет один обязательный параметр — EventDispatcherInterface и необязательный, который должен содержать функцию, которая формирует событие на случай, если при обработке запроса произойдёт исключительная ситуация. Внутри этой функции передаются два параметра: update\_id из запроса и экземпляр произошедшего исключения.

```
    public function webhook(
        TelegramBotWebhook $webhook,
        EventDispatcherInterface $eventDispatcher
    ): JsonResponse {
        if (!$webhook->isSecretTokenValid()) {
            return $this->json(null, Response::HTTP_UNAUTHORIZED);
        }

        return $this->json($webhook->dispatch($eventDispatcher, fn($update_id, $e) => new AdminNotifyTextMessage('Во время обработки сообщения ' . $update_id . " произошла ошибка.\n" . $e)));
    }
```

Разбор ответа на сущности
-------------------------

[](#разбор-ответа-на-сущности)

Разбор ответа на сущности не является обязательным, но позволит не проводить проверку наличия определённых полей ответа, т.к. в случае их отсутствия в ответе будет получен `null`. Включить десериализацию ответов можно с помощью установки сериалайзера через `TelegramBotQuery::setSerializer()`. В качестве параметра требуется класс, реализующий `Symfony\Component\Serializer\SerializerInterface`, который можно найти в пакете `symfony/serializer`. После его установки все ответы на методы `httpGet()`, `httpPost()` или `httpPostJson()` будут десериализованы.

```
$serializer = new Serializer([new ObjectNormalizer()], [new JsonEncoder]);
$query = new FSA\Telegram\TelegramBotHttpClient(Symfony\Component\HttpClient\HttpClient::create(), 'TOKEN');
$query->setSerializer($serializer);
```

Также, можно просто использовать классы из пространства имён `Entity` в IDE для формирования подсказок без непосредственного их использования.

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance43

Moderate activity, may be stable

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~156 days

Recently: every ~115 days

Total

8

Last Release

457d ago

PHP version history (4 changes)v0.1.0PHP ^7.4||^8.0

v0.2.0PHP ^8.0

v0.3.0PHP ^8.1

v0.5-alphaPHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/40d7def892be89c6c30604165cf1168f41a458880bac7621db4a2dc6bd4782d1?d=identicon)[fsa](/maintainers/fsa)

---

Top Contributors

[![fsa](https://avatars.githubusercontent.com/u/1696211?v=4)](https://github.com/fsa "fsa (107 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/fsa-telegram-bot-api/health.svg)

```
[![Health](https://phpackages.com/badges/fsa-telegram-bot-api/health.svg)](https://phpackages.com/packages/fsa-telegram-bot-api)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M737](/packages/sylius-sylius)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[algolia/algoliasearch-client-php

API powering the features of Algolia.

69735.1M159](/packages/algolia-algoliasearch-client-php)[avalara/avataxclient

Client library for Avalara's AvaTax suite of business tax calculation and processing services. Uses the REST v2 API.

528.5M7](/packages/avalara-avataxclient)[keboola/storage-api-client

Keboola Storage API PHP Client

10405.9k40](/packages/keboola-storage-api-client)[flowwow/cloudpayments-php-client

cloudpayments api client

21101.2k](/packages/flowwow-cloudpayments-php-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
