Skip to content

Commit 8a42dbd

Browse files
Initial commit
0 parents  commit 8a42dbd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+5452
-0
lines changed

README.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
# MaxBot API Client (Python)
2+
3+
`maxbot-api-client-python` — это библиотека для интеграции с API MAX Bot. Этот проект предоставляет структурированный интерфейс для взаимодействия с конфигурациями бота, управления сообщениями, отправки медиафайлов и подписки на события через long-polling.
4+
5+
Для использования библиотеки потребуется получить токен бота в консоли разработчика MAX bot.
6+
7+
## API
8+
9+
Документацию по REST API MAX можно найти по ссылке https://dev.max.ru/docs-api. Библиотека является оберткой для REST API, поэтому документация по указанной выше ссылке также применима к используемым здесь моделям и параметрам запроса.
10+
11+
## Поддержка
12+
13+
[![Support](https://img.shields.io/badge/support@green--bot.com-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:support@green-bot.com)
14+
[![Support](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/greenapi_support_ru_bot)
15+
[![Support](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://wa.me/77780739095)
16+
17+
## Руководства и новости
18+
19+
[![Guides](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/@green-api)
20+
[![News](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/green_api)
21+
[![News](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://whatsapp.com/channel/0029VaHUM5TBA1f7cG29nO1C)
22+
23+
24+
## Установка
25+
26+
**Убедитесь, что у вас установлен Python версии 3.8 или выше:**
27+
28+
```shell
29+
python --version
30+
```
31+
32+
**Установите библиотеку:**
33+
34+
```bash
35+
pip install -e .
36+
```
37+
38+
**Импорт:**
39+
40+
```python
41+
from maxbot_api_client_python import API, Config
42+
```
43+
44+
## Использование и примеры
45+
46+
**Как инициализировать клиент:**
47+
48+
```python
49+
try:
50+
bot = API(Config(
51+
base_url="https://platform-bot.max.ru", # Base url for MAX API requests
52+
token="YOUR_BOT_TOKEN", # Max bot token
53+
global_rps=25,
54+
timeout=35
55+
))
56+
except ValueError as e:
57+
print(f"Initialization error: {e}")
58+
```
59+
60+
**Как получить информацию о боте:**
61+
62+
* Ссылка на синхронный пример: [GetBot.py](./examples/sync/GetBot.py)
63+
64+
```python
65+
response = bot.bots.GetBot()
66+
```
67+
68+
* Ссылка на асинхронный пример: [GetBotAsync.py](./examples/async/GetBotAsync.py)
69+
70+
```python
71+
72+
response = await bot.bots.GetBotAsync()
73+
```
74+
75+
**Как отправить сообщение:**
76+
77+
* Ссылка на синхронный пример: [SendMessage.py](./examples/sync/SendMessage.py)
78+
79+
```python
80+
response = bot.messages.SendMessage(SendMessageReq(
81+
user_id=1234567890,
82+
text="Hello world!"
83+
))
84+
```
85+
86+
* Ссылка на асинхронный пример: [SendMessage.py](./examples/async/SendMessageAsync.py)
87+
88+
```python
89+
response = await bot.messages.SendMessageAsync(SendMessageReq(
90+
user_id=1234567890,
91+
text="Hello world from Async!"
92+
))
93+
```
94+
95+
**Как легко отправить файл (по ссылке или локальный):**
96+
97+
* Ссылка на синхронный пример: [SendFile.py](./examples/sync/SendFile.py)
98+
99+
```python
100+
response = bot.helpers.SendFile(SendFileReq(
101+
chat_id=1234567890,
102+
text="Check this!",
103+
file_source="https://example.com/image.png"
104+
))
105+
```
106+
107+
* Ссылка на асинхронный пример: [SendFileAsync.py](./examples/async/SendFileAsync.py)
108+
109+
```python
110+
response = await bot.helpers.SendFileAsync(SendFileReq(
111+
chat_id=1234567890,
112+
text="Посмотри на этот файл!",
113+
file_source="https://example.com/image.png"
114+
))
115+
```
116+
117+
**Как вручную загрузить файл (для кастомных вложений):**
118+
119+
* Ссылка на синхронный пример: [UploadFile.py](./examples/sync/UploadFile.py)
120+
121+
```python
122+
response = bot.uploads.UploadFile(UploadFileReq(
123+
type=UploadType.IMAGE,
124+
file_path="examples/assets/file.png"
125+
))
126+
```
127+
128+
* Ссылка на асинхронный пример: [UploadFileAsync.py](./examples/async/UploadFileAsync.py)
129+
130+
```python
131+
response = await bot.uploads.UploadFileAsync(UploadFileReq(
132+
type=UploadType.IMAGE,
133+
file_path="examples/assets/file.png"
134+
))
135+
```
136+
137+
**Как получить входящее уведомление:**
138+
139+
* Ссылка на синхронный пример: [GetUpdates.py](./examples/sync/GetUpdates.py)
140+
141+
```python
142+
response = bot.subscriptions.GetUpdates(GetUpdatesReq(
143+
marker=0,
144+
timeout=30
145+
))
146+
```
147+
148+
* Ссылка на асинхронный пример: [GetUpdatesAsync.py](./examples/async/GetUpdatesAsync.py)
149+
150+
```python
151+
response = await bot.subscriptions.GetUpdatesAsync(GetUpdatesReq(
152+
marker=0,
153+
timeout=30
154+
))
155+
```
156+
157+
-----
158+
159+
## Список примеров
160+
161+
| Описание | Ссылка на пример |
162+
| ---------------------------------------------- | ------------------------------------------------------------ |
163+
| Как отправить сообщение | [SendMessage.py](./examples/sync/SendMessage.py) |
164+
| Как отправить сообщение *асинхронно* | [SendMessageAsync.py](./examples/async/SendMessageAsync.py) |
165+
| Как получить информацию о боте | [GetBot.py](./examples/sync/GetBot.py) |
166+
| Как получить информацию о боте *асинхронно* | [GetBotAsync.py](./examples/async/GetBotAsync.py) |
167+
| Как загрузить файл | [UploadFile.py](./examples/sync/UploadFile.py) |
168+
| Как загрузить файл *асинхронно* | [UploadFileAsync.py](./examples/async/UploadFileAsync.py) |
169+
| Как отправить файл | [SendFile.py](./examples/sync/SendFile.py) |
170+
| Как отправить файл *асинхронно* | [SendFileAsync.py](./examples/async/SendFileAsync.py) |
171+
| Как получить входящее уведомление | [GetUpdates.py](./examples/sync/GetUpdates.py) |
172+
| Как получить входящее уведомление *асинхронно* | [GetUpdates.py](./examples/async/GetUpdatesAsync.py) |
173+
174+
## Список всех методов библиотеки
175+
176+
| Метод API | Описание | Ссылка на документацию MAX | Ссылка на документацию библиотеки |
177+
|-----------------|-------------------------|------------------------------------------------|----------------------------------------------|
178+
| `Bots.GetBot` | Получает информацию о боте | [GetBot](https://dev.max.ru/docs-api/methods/GET/me) | [GetBot](./docs/bots/GetBot.md) |
179+
| `Bots.PatchBot` | Изменяет информацию о боте | | [PatchBot](./docs/bots/PatchBot.md) |
180+
| `Chats.GetChats` | Возвращает список групповых чатов, в которых участвовал бот | [GetChats](https://dev.max.ru/docs-api/methods/GET/chats) | [GetChats](./docs/chats/GetChats.md) |
181+
| `Chats.GetChat` | Возвращает информацию о групповом чате по его ID | [GetChat](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-) | [GetChat](./docs/chats/GetChat..md) |
182+
| `Chats.EditChat` | Позволяет редактировать информацию о групповом чате | [EditChat](https://dev.max.ru/docs-api/methods/PATCH/chats/-chatId-) | [EditChat](./docs/chats/EditChat.md) |
183+
| `Chats.DeleteChat` | Удаляет групповой чат для всех участников | [DeleteChat](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-) | [DeleteChat](./docs/chats/DeleteChat.md) |
184+
| `Chats.SendAction` | Позволяет отправлять следующие действия бота в групповой чат | [SendAction](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/actions) | [SendAction](./docs/chats/SendAction.md) |
185+
| `Chats.GetPinnedMessage` | Возвращает закрепленное сообщение в чате | [GetPinnedMessage](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/pin) | [GetPinnedMessage](./docs/chats/GetPinnedMessage.md) |
186+
| `Chats.PinMessage` | Закрепляет сообщение в групповом чате | [PinMessage](https://dev.max.ru/docs-api/methods/PUT/chats/-chatId-/pin) | [PinMessage](./docs/chats/PinMessage.md) |
187+
| `Chats.UnpinMessage` | Удаляет закрепленное сообщение в групповом чате | [UnpinMessage](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/pin) | [UnpinMessage](./docs/chats/UnpinMessage.md) |
188+
| `Chats.GetChatMembership` | Возвращает членство бота в групповом чате | [GetChatMembership](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/me) | [GetChatMembership](./docs/chats/GetChatMembership.md) |
189+
| `Chats.LeaveChat` | Удаляет бота из группового чата | [LeaveChat](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/me) | [LeaveChat](./docs/chats/LeaveChat.md) |
190+
| `Chats.GetChatAdmins` | Возвращает список всех администраторов группового чата | [GetChatAdmins](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members/admins) | [GetChatAdmins](./docs/chats/GetChatAdmins.md) |
191+
| `Chats.SetChatAdmins` | Назначает участника группы администратором | [SetChatAdmins](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members/admins) | [SetChatAdmins](./docs/chats/SetChatAdmins.md) |
192+
| `Chats.DeleteAdmin` | Отменяет права администратора пользователя в групповом чате | [DeleteAdmin](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members/admins/-userId-) | [DeleteAdmin](./docs/chats/DeleteAdmin.md) |
193+
| `Chats.GetChatMembers` | Возвращает список участников группового чата | [GetChatMembers](https://dev.max.ru/docs-api/methods/GET/chats/-chatId-/members) | [GetChatMembers](./docs/chats/GetChatMembers.md) |
194+
| `Chats.AddMembers` | Добавляет участников в групповой чат | [AddMembers](https://dev.max.ru/docs-api/methods/POST/chats/-chatId-/members) | [AddMembers](./docs/chats/AddMembers.md) |
195+
| `Chats.DeleteMember` | Удаляет участника из группового чата | [DeleteMember](https://dev.max.ru/docs-api/methods/DELETE/chats/-chatId-/members) | [DeleteMember](./docs/chats/DeleteMember.md) |
196+
| `Subscriptions.GetSubscriptions` | Возвращает список подписок на уведомления веб-хуков | [GetSubscriptions](https://dev.max.ru/docs-api/methods/GET/subscriptions) | [GetSubscriptions](./docs/subscriptions/GetSubscriptions.md) |
197+
| `Subscriptions.Subscribe` | Настраивает доставку событий бота через веб-хук | [Subscribe](https://dev.max.ru/docs-api/methods/POST/subscriptions) | [Subscribe](./docs/subscriptions/Subscribe.md) |
198+
| `Subscriptions.Unsubscribe` | Отменяет подписку бота на получение обновлений через веб-хук | [Unsubscribe](https://dev.max.ru/docs-api/methods/DELETE/subscriptions) | [Unsubscribe](./docs/subscriptions/Unsubscribe.md)|
199+
| `Subscriptions.GetUpdates` | Получает входящие обновления | [GetUpdates](https://dev.max.ru/docs-api/methods/GET/updates) | [GetUpdates](./docs/subscriptions/GetUpdates.md) |
200+
| `Upload.UploadFile` | Загружает файл на серверы MAX для последующей передачи | [UploadFile](https://dev.max.ru/docs-api/methods/POST/uploads) | [UploadFile](./docs/upload/UploadFile.md) |
201+
| `Helpers.SendFile` | Упрощает отправку файлов, автоматически определяя URL или путь | | [SendFile](./docs/helpers/SendFile.md) |
202+
| `Messages.GetMessages` | Возвращает информацию о сообщении или массив сообщений из чата | [GetMessages](https://dev.max.ru/docs-api/methods/GET/messages) | [GetMessages](./docs/messages/GetMessages.md) |
203+
| `Messages.SendMessage` | Отправляет текстовое или медиа-сообщение указанному пользователю или в чат | [SendMessage](https://dev.max.ru/docs-api/methods/POST/messages) | [SendMessage](./docs/messages/SendMessage.md) |
204+
| `Messages.EditMessage` | Редактирует текст или медиафайл ранее отправленного сообщения | [EditMessage](https://dev.max.ru/docs-api/methods/PUT/messages) | [EditMessage](./docs/messages/EditMessage.md) |
205+
| `Messages.DeleteMessage` | Удаляет сообщение из чата | [DeleteMessage](https://dev.max.ru/docs-api/methods/DELETE/messages) | [DeleteMessage](./docs/messages/DeleteMessage.md) |
206+
| `Messages.GetMessage` | Извлекает содержимое и метаданные конкретного сообщения по его ID | [GetMessage](https://dev.max.ru/docs-api/methods/GET/messages/-messageId-) | [GetMessage](./docs/messages/GetMessage.md) |
207+
| `Messages.GetVideoInfo` | Возвращает подробную информацию о прикрепленном видео | [GetVideoInfo](https://dev.max.ru/docs-api/methods/GET/videos/-videoToken-) | [GetVideoInfo](./docs/messages/GetVideoInfo.md) |
208+
| `Messages.AnswerCallback` | Отправляет ответ после того, как пользователь нажмет кнопку | [AnswerCallback](https://dev.max.ru/docs-api/methods/POST/answers) | [AnswerCallback](./docs/messages/AnswerCallback.md)|

docs/bots/GetBot.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# GetBot
2+
3+
[dev.max.ru/docs-api/methods/GET/me](https://dev.max.ru/docs-api/methods/GET/me)
4+
5+
Метод предназначен для получения данных бота.
6+
7+
## Запрос {#request}
8+
9+
### Пример запроса {#request-example}
10+
11+
*Синхронный запрос:*
12+
13+
```python
14+
response = bot.Bots.GetBot()
15+
```
16+
17+
*Асинхронный запрос:*
18+
19+
```python
20+
response = await bot.Bots.GetBotASync()
21+
```
22+
23+
## Ответ {#response}
24+
25+
[**объект `BotInfo`**](../objects/User.md#botinfo-botinfo)
26+
27+
### Поля ответа {#response-parameters}
28+
29+
| Поле | Тип | Описание |
30+
|--------------------|-------------|-----------------------------------------------------------------------------------------------------------|
31+
| `user_id` | **integer** | Идентификатор пользователя или бота |
32+
| `first_name` | **string** | Отображаемое имя пользователя или бота |
33+
| `last_name` | **string** | Отображаемая фамилия пользователя. Для ботов это поле не возвращается |
34+
| `username` | **string** | Никнейм бота или уникальное публичное имя пользователя. |
35+
| `is_bot` | **boolean** | `true`, если это бот |
36+
| <nobr>`last_activity_time`<nobr> | **integer** | Время последней активности пользователя или бота в MAX (Unix-время в миллисекундах) |
37+
| `description` | **string** | Описание бота (до 16000 символов) |
38+
| `avatar_url` | **string** | URL аватара бота в уменьшенном размере |
39+
| `full_avatar_url` | **string** | URL аватара бота в полном размере |
40+
| `commands` | [**object**](../objects/User.md#поля-объекта-botcommand-botcommand) | Команды, поддерживаемые ботом (до 32 элементов) |
41+
42+
### Пример тела ответа {#response-example-body}
43+
44+
```json
45+
{
46+
"user_id": 123456789,
47+
"first_name": "GREEN-API",
48+
"username": "id1234567890_1_bot",
49+
"is_bot": true,
50+
"last_activity_time": 1773814559150,
51+
"description": "Test bot",
52+
"avatar_url": "https://i.oneme.ru/i?r=BTFjO43w8Yr1OSJ4tcurq5HiiuX5O9Fsy5lfWoOPCwG1Y9LtsPSxKRIDWbrHrJ8JfPo",
53+
"full_avatar_url": "https://i.oneme.ru/i?r=BTFjO43w8Yr1OSJ4tcurq5Hi0Hf8i3P1bQrH_cLXNMIZVtLtsPSxKRIDWbrHrJ8JfPo"
54+
}
55+
```

0 commit comments

Comments
 (0)