> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Группы доступа

Группы доступа — это именованные списки отправителей, которые вы один раз определяете в `accessGroups` и указываете в списках разрешённых отправителей каналов с помощью `accessGroup:<name>`.

Используйте их, когда одним и тем же людям нужно разрешить доступ в нескольких каналах сообщений или когда один доверенный набор должен применяться как к личным сообщениям, так и к авторизации отправителей в группах.

Сама по себе группа ничего не разрешает. Она действует только там, где на неё ссылается поле списка разрешённых отправителей.

## Статические группы отправителей сообщений

Статические группы отправителей используют `type: "message.senders"`. `members` индексируется по идентификатору канала сообщений, а `"*"` используется для записей, общих для всех каналов:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        "*": ["global-owner-id"],
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
        whatsapp: ["+15551234567"],
      },
    },
  },
}
```

| Ключ | Значение |
| - | - |
| `"*"` | Общие записи, проверяемые для каждого канала сообщений, ссылающегося на группу. |
| `discord`, `telegram`, ... | Записи, проверяемые только при сопоставлении со списком разрешённых отправителей этого канала. |

Записи сопоставляются по обычным правилам `allowFrom` целевого канала. OpenClaw не преобразует идентификаторы отправителей между каналами: если у Алисы есть идентификатор Telegram и идентификатор Discord, укажите оба идентификатора в соответствующих ключах каналов.

## Ссылки на группы из списков разрешённых отправителей

Указывайте группу с помощью `accessGroup:<name>` в любом месте пути канала сообщений, где поддерживаются списки разрешённых отправителей.

Пример списка разрешённых отправителей личных сообщений:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
      },
    },
  },
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators"],
    },
    telegram: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators"],
    },
  },
}
```

Пример списка разрешённых отправителей группы:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  accessGroups: {
    oncall: {
      type: "message.senders",
      members: {
        whatsapp: ["+15551234567"],
        googlechat: ["users/1234567890"],
      },
    },
  },
  channels: {
    whatsapp: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["accessGroup:oncall"],
    },
    googlechat: {
      groups: {
        "spaces/AAA": {
          users: ["accessGroup:oncall"],
        },
      },
    },
  },
}
```

Группы и прямые записи можно использовать совместно:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:operators", "discord:123456789012345678"],
    },
  },
}
```

## Поддерживаемые пути каналов сообщений

Группы доступа работают в общих путях авторизации каналов сообщений:

* списки разрешённых отправителей личных сообщений, например `channels.<channel>.allowFrom`
* списки разрешённых отправителей групп, например `channels.<channel>.groupAllowFrom`
* списки разрешённых отправителей для отдельных комнат конкретного канала, использующие те же правила сопоставления отправителей (например, `groups.<space>.users` Google Chat)
* пути авторизации команд, повторно использующие списки разрешённых отправителей каналов сообщений

Поддержка канала зависит от того, подключён ли он к общим вспомогательным функциям OpenClaw для авторизации отправителей. В настоящее время встроенная поддержка включает ClickClack, Discord, Feishu, Google Chat, iMessage, IRC, LINE, Mattermost, Microsoft Teams, Nextcloud Talk, Nostr, QQ Bot, Signal, Slack, SMS, Telegram, WhatsApp, Zalo и Zalo Personal. Статические группы `message.senders` не зависят от канала, поэтому новые каналы сообщений получают их поддержку, если используют общие вспомогательные функции входящей обработки из SDK плагинов вместо собственной логики раскрытия списков разрешённых отправителей.

## Аудитории каналов Discord

Discord также поддерживает динамический тип группы доступа:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  accessGroups: {
    maintainers: {
      type: "discord.channelAudience",
      guildId: "1456350064065904867",
      channelId: "1456744319972282449",
      membership: "canViewChannel",
    },
  },
  channels: {
    discord: {
      dmPolicy: "allowlist",
      allowFrom: ["accessGroup:maintainers"],
    },
  },
}
```

`discord.channelAudience` означает «разрешить отправителей личных сообщений Discord, которые в данный момент могут просматривать этот канал сервера». OpenClaw проверяет отправителя через Discord во время авторизации и применяет правила разрешений Discord `ViewChannel`. `membership` является необязательным и по умолчанию имеет значение `canViewChannel`.

Используйте это, когда канал Discord уже является источником достоверных данных о команде, например `#maintainers` или `#on-call`.

Требования и поведение при сбоях:

* Боту необходим доступ к серверу и каналу.
* Для бота в Discord Developer Portal требуется **Server Members Intent**.
* Группа доступа запрещает доступ при сбое, если Discord возвращает `Missing Access`, отправителя невозможно определить как участника сервера или канал принадлежит другому серверу.

Дополнительные примеры для Discord: [Управление доступом Discord](https://docs2.openclaw.ai/ru/channels/discord.md#access-control-and-routing)

## Диагностика плагинов

Авторы плагинов могут проверять структурированное состояние группы доступа, не преобразуя его обратно в плоский список разрешённых отправителей:

```typescript theme={"theme":{"light":"min-light","dark":"min-dark"}}
import { resolveAccessGroupAllowFromState } from "openclaw/plugin-sdk/access-groups";

const state = await resolveAccessGroupAllowFromState({
  accessGroups: cfg.accessGroups,
  allowFrom: channelConfig.allowFrom,
  channel: "my-channel",
  accountId: "default",
  senderId,
  isSenderAllowed,
});
```

Результат содержит сведения об указанных, совпавших, отсутствующих, неподдерживаемых и завершившихся с ошибкой группах. Используйте его для диагностики или тестов соответствия. Используйте `expandAllowFromWithAccessGroups(...)` только для путей совместимости, которые всё ещё ожидают плоский массив `allowFrom`.

## Примечания по безопасности

* Группы доступа — это псевдонимы списков разрешённых отправителей, а не роли. Сами по себе они не создают владельцев, не одобряют запросы на сопряжение и не предоставляют разрешения на использование инструментов.
* `dmPolicy: "open"` по-прежнему требует наличия `"*"` в действующем списке разрешённых отправителей личных сообщений. Ссылка на группу доступа не равнозначна публичному доступу.
* Отсутствующие имена групп приводят к запрету доступа. Если `allowFrom` содержит `accessGroup:operators`, а `accessGroups.operators` отсутствует, эта запись никого не авторизует.
* Используйте стабильные идентификаторы каналов. Если канал поддерживает оба варианта, предпочитайте числовые идентификаторы или идентификаторы пользователей отображаемым именам.

## Устранение неполадок

Если отправитель должен соответствовать условию, но заблокирован:

1. Убедитесь, что поле списка разрешённых отправителей содержит точную ссылку `accessGroup:<name>`.
2. Убедитесь, что `accessGroups.<name>.type` указан правильно.
3. Убедитесь, что идентификатор отправителя указан в соответствующем ключе канала или в `"*"`.
4. Убедитесь, что запись использует обычный синтаксис списка разрешённых отправителей этого канала.
5. Для аудиторий каналов Discord убедитесь, что бот видит канал сервера и что Server Members Intent включён.

После изменения конфигурации управления доступом выполните `openclaw doctor`. Эта команда обнаруживает многие недопустимые сочетания списков разрешённых отправителей и политик до запуска.
