npm package: @green-api/maxbot-api-client-ts
Description: TypeScript SDK for MAX Bot API
Author: GREEN-API
Latest version: 1.0.0

# MAX BOT API Client (TypeScript)

`maxbot-api-client-ts` — это современный TypeScript SDK для интеграции с MAX BOT API. Библиотека предоставляет строго типизированный интерфейс для управления ботами, сообщениями, чатами и медиафайлами, а также поддерживает работу через long-polling и вебхуки.

Для использования библиотеки потребуется получить токен бота в консоли разработчика MAX bot.    
Ознакомиться с инструкцией можно [по ссылке](https://green-api.com/max-bot-api/docs/before-start/).     

## API

Документацию по **REST API MAX** можно найти по ссылке [dev.max.ru/docs-api](https://dev.max.ru/docs-api). Библиотека является оберткой для REST API, поэтому документация по указанной выше ссылке также применима к используемым здесь моделям.

Документацию по **MAX BOT API** можно найти по ссылке [green-api.com/max-bot-api/docs](https://green-api.com/max-bot-api/docs/).

## Поддержка

[![Support](https://img.shields.io/badge/support@green--api.com-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:support@green-api.com)
[![Support](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/greenapi_support_ru_bot)
[![Support](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://wa.me/77780739095)

## Руководства и новости

[![Guides](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/@green-api)
[![News](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/green_api)
[![News](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://whatsapp.com/channel/0029VaHUM5TBA1f7cG29nO1C)

-----

## Установка

**Убедитесь, что у вас установлена версия Node.js версии не ниже 18**

```bash
node -v
```

```bash
npm -v
```

**Установите библиотеку:**

```bash
npm install @green-api/maxbot-api-client-ts
```

-----

## Использование и примеры

**Параметры конфигурации:** 

- `base_url` - Базовый URL-адрес серверов платформы MaxBot. Все методы API будут маршрутизироваться по этому корневому адресу. Актуальный адрес указан в [официальной документации](https://dev.max.ru/docs-api).
- `token` - Уникальный секретный ключ авторизации (API-ключ) вашего бота. Получить его можно в личном кабинете после [регистрации или создании бота](https://green-api.com/max-bot-api/docs/before-start/) на платформе [business.max.ru](https://business.max.ru/).
- `ratelimiter` - Встроенный ограничитель частоты запросов. Он контролирует количество исходящих запросов в секунду (RPS), защищая бота от блокировки со стороны сервера за превышение лимитов. Рекомендуемое значение — не менее 25.
- `timeout` - Максимальное время ожидания ответа от сервера (в секундах). Если сервер не ответит в течение этого времени, запрос будет завершен с ошибкой. Оптимальное значение — 30 секунд.

**Как инициализировать клиент:**

```typescript
import { MaxBotAPI } from '@green-api/maxbot-api-client-ts';

const response = new MaxBotAPI({
    base_url: "https://platform-api.max.ru",
    token: "YOUR_BOT_TOKEN",
    ratelimiter: 25,
    timeout: 30000
});
```

**Как получить информацию о боте:**

Ссылка на пример: [getBot/main.ts](./examples/getBot/main.ts)

```typescript
const response = await bot.bots.getBot();
```

**Как отправить сообщение:**

Ссылка на пример: [sendMessage/main.ts](./examples/sendMessage/main.ts)

```typescript
await bot.messages.sendMessage({
    user_id: 123456789,
    text: "Hello world!",
});
```

**Как легко отправить файл (по ссылке или локальный):**

Метод `helpers.sendFile` сам определит тип источника и загрузит файл на сервер, если это необходимо.

Ссылка на пример: [sendFile/main.ts](./examples/sendFile/main.ts)

```typescript
await bot.helpers.sendFile({
    chat_id: 123456789,
    file_source: "./documents/report.pdf",
});
```
```typescript
await bot.helpers.sendFile({
    chat_id: 123456789,
    file_source: "https://example.com/image.png",
});
```

**Как получить входящее уведомление:**

Ссылка на пример: [getUpdates/main.ts](./examples/getUpdates/main.ts)

```typescript
const response = await bot.subscriptions.getUpdates({
    timeout: 25,
    marker: marker,
    types: [UpdateType.MessageCreated]
});
```

-----

## Список примеров

| Описание                             | Ссылка на пример                                         |
|--------------------------------------|----------------------------------------------------------|
| Как отправить сообщение              | [sendMessage/main.ts](./examples/sendMessage/main.ts)    |
| Как получить информацию о боте       | [getBot/main.ts](./examples/getBot/main.ts)              |
| Как отправить файл                   | [sendFile/main.ts](./examples/sendFile/main.ts)          |
| Как загрузить файл                   | [uploadFile/main.ts](./examples/uploadFile/main.ts)      |
| Как получить входящее уведомление    | [getUpdates/main.ts](./examples/getUpdates/main.ts)      |

## Список всех методов библиотеки

| Метод API       | Описание                | Ссылка на документацию MAX                     | Ссылка на документацию MAX BOT API           |
|-----------------|-------------------------|------------------------------------------------|----------------------------------------------|
| `bots.getBot`    | Получает информацию о боте | [getBot](https://dev.max.ru/docs-api/methods/GET/me) | [GetBot](https://green-api.com/max-bot-api/docs/api/bots/GetBot/) |
| `bots.patchBot`  | Изменяет информацию о боте | | [patchBot](https://green-api.com/max-bot-api/docs/api/bots/PatchBot/) |
| `chats.getChats` | Возвращает список групповых чатов, в которых участвовал бот | [getChats](https://dev.max.ru/docs-api/methods/GET/chats) | [GetChats](https://green-api.com/max-bot-api/docs/api/chats/GetChats/) |
| `chats.getChat`  | Возвращает информацию о групповом чате по его ID | [getChat](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-) | [GetChat](https://green-api.com/max-bot-api/docs/api/chats/GetChat/) |
| `chats.editChat` | Позволяет редактировать информацию о групповом чате | [editChat](https://dev.max.ru/docs-api/methods/PATCH/chats/-chatId-) | [EditChat](https://green-api.com/max-bot-api/docs/api/chats/EditChat/) |
| `chats.deleteChat` | Удаляет групповой чат для всех участников | [deleteChat](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-) | [DeleteChat](https://green-api.com/max-bot-api/docs/api/chats/DeleteChat/) |
| `chats.sendAction` | Позволяет отправлять следующие действия бота в групповой чат | [sendAction](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/actions) | [SendAction](https://green-api.com/max-bot-api/docs/api/chats/SendAction) |
| `chats.getPinnedMessage` | Возвращает закрепленное сообщение в чате | [getPinnedMessage](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/pin) | [GetPinnedMessage](https://green-api.com/max-bot-api/docs/api/chats/GetPinnedMessage) |
| `chats.pinMessage` | Закрепляет сообщение в групповом чате | [pinMessage](https://dev.max.ru/docs-api/methods/PUT/chats/-chatId-/pin) | [PinMessage](https://green-api.com/max-bot-api/docs/api/chats/PinMessage) |
| `chats.unpinMessage` | Удаляет закрепленное сообщение в групповом чате | [unpinMessage](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/pin) | [UnpinMessage](https://green-api.com/max-bot-api/docs/api/chats/UnpinMessage) |
| `chats.getChatMembership` | Возвращает членство бота в групповом чате | [getChatMembership](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/me) | [GetChatMembership](https://green-api.com/max-bot-api/docs/api/chats/GetChatMembership) |
| `chats.leaveChat` | Удаляет бота из группового чата | [leaveChat](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/me) | [LeaveChat](https://green-api.com/max-bot-api/docs/api/chats/LeaveChat) |
| `chats.getChatAdmins` | Возвращает список всех администраторов группового чата | [getChatAdmins](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/admins) | [GetChatAdmins](https://green-api.com/max-bot-api/docs/api/chats/GetChatAdmins) |
| `chats.setChatAdmins` | Назначает участника группы администратором | [setChatAdmins](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins) | [SetChatAdmins](https://green-api.com/max-bot-api/docs/api/chats/SetChatAdmins) |
| `chats.deleteAdmin` | Отменяет права администратора пользователя в групповом чате | [deleteAdmin](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/admins/-userId-) | [DeleteAdmin](https://green-api.com/max-bot-api/docs/api/chats/DeleteAdmin) |
| `chats.getChatMembers`     | Возвращает список участников группового чата | [getChatMembers](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members) | [GetChatMembers](https://green-api.com/max-bot-api/docs/api/chats/GetChatMembers) |
| `chats.addMembers`         | Добавляет участников в групповой чат | [addMembers](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members) | [AddMembers](https://green-api.com/max-bot-api/docs/api/chats/AddMembers) |
| `chats.deleteMember` | Удаляет участника из группового чата | [deleteMember](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members) | [DeleteMember](https://green-api.com/max-bot-api/docs/api/chats/DeleteMember) |
| `subscriptions.getSubscriptions` | Возвращает список подписок на уведомления веб-хуков | [getSubscriptions](https://dev.max.ru/docs-api/methods/GET/subscriptions) | [GetSubscriptions](https://green-api.com/max-bot-api/docs/api/subscriptions/GetSubscriptions) |
| `subscriptions.subscribe`        | Настраивает доставку событий бота через веб-хук | [subscribe](https://dev.max.ru/docs-api/methods/POST/subscriptions) | [Subscribe](https://green-api.com/max-bot-api/docs/api/subscriptions/Subscribe.md)  |
| `subscriptions.unsubscribe` | Отменяет подписку бота на получение обновлений через веб-хук | [unsubscribe](https://dev.max.ru/docs-api/methods/DELETE/subscriptions) | [Unsubscribe](https://green-api.com/max-bot-api/docs/api/subscriptions/Unsubscribe) |
| `subscriptions.getUpdates` | Получает входящие обновления | [getUpdates](https://dev.max.ru/docs-api/methods/GET/updates) | [GetUpdates](https://green-api.com/max-bot-api/docs/api/subscriptions/GetUpdates) |
| `upload.uploadFile` | Загружает файл на серверы MAX для последующей передачи | [uploadFile](https://dev.max.ru/docs-api/methods/POST/uploads) | [UploadFile](https://green-api.com/max-bot-api/docs/upload/UploadFile) |
| `helpers.sendFile` | Упрощает отправку файлов, автоматически определяя URL или путь | | [SendFile](https://green-api.com/max-bot-api/docs/helpers/SendFile) |
| `messages.getMessages` | Возвращает информацию о сообщении или массив сообщений из чата | [getMessages](https://dev.max.ru/docs-api/methods/GET/messages) | [GetMessages](https://green-api.com/max-bot-api/docs/api/messages/GetMessages) |
| `messages.sendMessage` | Отправляет текстовое или медиа-сообщение указанному пользователю или в чат | [sendMessage](https://dev.max.ru/docs-api/methods/POST/messages) | [SendMessage](https://green-api.com/max-bot-api/docs/api/messages/SendMessage) |
| `messages.editMessage` | Редактирует текст или медиафайл ранее отправленного сообщения | [editMessage](https://dev.max.ru/docs-api/methods/PUT/messages) | [EditMessage](https://green-api.com/max-bot-api/docs/api/messages/EditMessage) |
| `messages.deleteMessage` | Удаляет сообщение из чата | [deleteMessage](https://dev.max.ru/docs-api/methods/DELETE/messages) | [DeleteMessage](https://green-api.com/max-bot-api/docs/api/messages/DeleteMessage) |
| `messages.getMessage` | Извлекает содержимое и метаданные конкретного сообщения по его ID | [getMessage](https://dev.max.ru/docs-api/methods/GET/messages/-messageId-) | [GetMessage](https://green-api.com/max-bot-api/docs/api/messages/GetMessage) |
| `messages.getVideoInfo` | Возвращает подробную информацию о прикрепленном видео | [getVideoInfo](https://dev.max.ru/docs-api/methods/GET/videos/-videoToken-) | [GetVideoInfo](https://green-api.com/max-bot-api/docs/api/messages/GetVideoInfo) |
| `messages.answerCallback` | Отправляет ответ после того, как пользователь нажмет кнопку | [answerCallback](https://dev.max.ru/docs-api/methods/POST/answers) | [AnswerCallback](https://green-api.com/max-bot-api/docs/api/messages/AnswerCallback )|

-----

## Лицензия

[MIT](https://github.com/green-api/maxbot-api-client-ts/blob/master/LICENSE)