Cluster · разработчикам
ExchangeRequest
Подготовленный запрос обмена конкретным ресурсом. Не даёт доступ до одобрения получателем.
Все методы SDK · Типы и ошибки
Получение объекта
request = app.exchange("peer-id", "module-id").use("data", "notes")__init__
Создаёт ExchangeRequest. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
def __init__(exchange: Exchange, peer: str, module: str | None, slot: str | None = 'main') -> None: ...Аргументы
exchange: Exchange, обязательный. Служба договоров текущего приложения.peer: str, обязательный. ID профиля юзербота получателя договора, не Telegram ID.module: str | None, обязательный. ID публикации модуля. None выбирает текущий раздел там, где это предусмотрено.slot: str | None, по умолчанию'main'. Имя профиля экземпляра. None использует выбор зависимости или текущий профиль.
Результат
None. Создаёт ExchangeRequest. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Отдельного исключения SDK нет. Действуют обычные ошибки типов Python и ошибки переданных функций, если они используются.
Пример
# Обычный способ получения объекта:
request = app.exchange("peer-id", "module-id").use("data", "notes")use
Выбирает ресурс data, text, file или event и его ключ либо ID объекта.
def use(kind: str, key: str | File) -> Self: ...Аргументы
kind: str, обязательный. Вид ресурса data, text, file или event.key: str | File, обязательный. Ключ ресурса либо объект с id; для файлов можно передать File.
Результат
Self. Тот же объект после успешной операции. Выбирает ресурс data, text, file или event и его ключ либо ID объекта.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
ValueError('Invalid exchange resource'): условие проверяется до продолжения операции.
Пример
result = request.use("data", "notes")mode
Выбирает permanent, once или group; для группового режима передаётся имя группы.
def mode(value: str, group: str | None = None) -> Self: ...Аргументы
value: str, обязательный. Режим permanent, once или group.group: str | None, по умолчаниюNone. Группа обработчиков либо имя группового договора по выбранному методу.
Результат
Self. Тот же объект после успешной операции. Выбирает permanent, once или group; для группового режима передаётся имя группы.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
ValueError('Invalid exchange mode'): условие проверяется до продолжения операции.
Пример
request.mode("permanent")direction
Выбирает send или receive относительно инициатора договора.
def direction(value: str) -> Self: ...Аргументы
value: str, обязательный. Направление send или receive относительно инициатора.
Результат
Self. Тот же объект после успешной операции. Выбирает send или receive относительно инициатора договора.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
ValueError('Invalid exchange direction'): условие проверяется до продолжения операции.
Пример
request.direction("receive")fields
Устанавливает схему передаваемых полей из JSON или объекта с build().
def fields(value: Fields | dict[str, JSON]) -> Self: ...Аргументы
value: Fields | dict[str, JSON], обязательный. Описание полей либо объект с build().
Результат
Self. Тот же объект после успешной операции. Устанавливает схему передаваемых полей из JSON или объекта с build().
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Отдельного исключения SDK нет. Действуют обычные ошибки типов Python и ошибки переданных функций, если они используются.
Пример
result = request.fields({})request
Отправляет запрос один раз и возвращает договор. После неизвестного результата повторная автоматическая отправка запрещена.
async def request() -> Agreement: ...Аргументы
Нет.
Результат
Agreement. Отправляет запрос один раз и возвращает договор. После неизвестного результата повторная автоматическая отправка запрещена.
Права
Нужны exchange.request.
Ошибки
ValueError('Choose the exchange resource first'): условие проверяется до продолжения операции.RuntimeError('The previous agreement request will not be sent again'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await request.request()