Deep Linking¶
maxapi.utils.deep_linking
¶
Утилиты для создания и декодирования deep links MAX.
encode_payload(payload, encoder=None)
¶
Кодирует payload в URL-safe base64 без padding.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
payload
|
str | _SupportsStr
|
Payload. Значения не строкового типа приводятся к строке. |
required |
encoder
|
Callable[[bytes], bytes] | None
|
Дополнительный кодировщик байтов. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Закодированный payload. |
Source code in maxapi/utils/deep_linking.py
decode_payload(payload, decoder=None)
¶
Декодирует URL-safe base64 payload.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
payload
|
str
|
Закодированный payload. |
required |
decoder
|
Callable[[bytes], bytes] | None
|
Дополнительный декодировщик байтов. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Исходная строка payload. |
Source code in maxapi/utils/deep_linking.py
create_start_link(username, payload, *, encode=False, encoder=None)
¶
Создаёт deep link для старта бота.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
username
|
str
|
Username бота. |
required |
payload
|
str | _SupportsStr
|
Данные, которые MAX передаст в BotStarted.payload. Значения не строкового типа приводятся к строке. |
required |
encode
|
bool
|
Кодировать payload через URL-safe base64. При передаче encoder кодирование выполняется независимо от значения encode. |
False
|
encoder
|
Callable[[bytes], bytes] | None
|
Дополнительный кодировщик байтов. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Ссылка вида https://max.ru/ |
Source code in maxapi/utils/deep_linking.py
create_startapp_link(username, payload=None, *, encode=False, encoder=None)
¶
Создаёт deep link для мини-приложения MAX.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
username
|
str
|
Username бота. |
required |
payload
|
str | _SupportsStr | None
|
Данные для параметра startapp. Значения не строкового типа приводятся к строке. Если не передан, ссылка содержит параметр startapp без значения. |
None
|
encode
|
bool
|
Кодировать payload через URL-safe base64. При передаче encoder кодирование выполняется независимо от значения encode. |
False
|
encoder
|
Callable[[bytes], bytes] | None
|
Дополнительный кодировщик байтов. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
str
|
Ссылка вида https://max.ru/ |
|
https |
str
|
//max.ru/ |
Source code in maxapi/utils/deep_linking.py
create_deep_link(username, link_type, payload=None, *, encode=False, encoder=None)
¶
Создаёт deep link MAX.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
username
|
str
|
Username бота. |
required |
link_type
|
Literal['start', 'startapp']
|
Тип ссылки: start или startapp. |
required |
payload
|
str | _SupportsStr | None
|
Данные для query-параметра. Значения не строкового типа приводятся к строке. |
None
|
encode
|
bool
|
Кодировать payload через URL-safe base64. При передаче encoder кодирование выполняется независимо от значения encode. |
False
|
encoder
|
Callable[[bytes], bytes] | None
|
Дополнительный кодировщик байтов. |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
Если link_type, username или payload невалидны. |
Returns:
| Type | Description |
|---|---|
str
|
Deep link MAX. |
Source code in maxapi/utils/deep_linking.py
Пример¶
from maxapi import F, Router
from maxapi.types import BotStarted
from maxapi.utils.deep_linking import (
create_start_link,
decode_payload,
)
router = Router()
link = create_start_link("MyBot", "123456789", encode=True)
@router.bot_started(F.payload)
async def on_deep_link(event: BotStarted) -> None:
user_id = decode_payload(event.payload)
В MAX payload из ссылки https://max.ru/<botName>?start=<payload>
приходит в событие BotStarted.payload.