---
read_when:
    - Налаштування повідомлень у каналах, створених ботом
    - Налаштування захисту від циклів між ботами
sidebarTitle: Bot loop protection
summary: Значення за замовчуванням для захисту від циклів між ботами та перевизначення для каналів
title: Захист від зациклення ботів
x-i18n:
    generated_at: "2026-07-12T12:57:52Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 08637267cd3422d3154315e709c85c85fa57641f1adb0e8ef10c32e8a7b73312
    source_path: channels/bot-loop-protection.md
    workflow: 16
---

OpenClaw може приймати повідомлення, написані іншими ботами, у каналах, які підтримують `allowBots`. Коли цей шлях увімкнено, захист від циклічної взаємодії пар не дає двом ідентичностям ботів нескінченно відповідати одна одній.

Захист забезпечує основний обробник вхідних відповідей. Кожен канал, що підтримує цю функцію, перетворює свою вхідну подію на загальні дані: обліковий запис або область дії, ідентифікатор розмови, ідентифікатор бота-відправника та ідентифікатор бота-одержувача. Ядро відстежує пару учасників в обох напрямках (A до B і B до A вважаються тією самою парою), застосовує ліміт у ковзному часовому вікні та блокує пару на період очікування після перевищення ліміту.

## Значення за замовчуванням

Захист від циклічної взаємодії пар активний щоразу, коли канал дозволяє повідомленням від ботів надходити до диспетчеризації. Вбудовані значення за замовчуванням:

| Ключ                 | Значення за замовчуванням | Значення                                                   |
| -------------------- | ------------------------- | ---------------------------------------------------------- |
| `enabled`            | `true`                    | Захист активний для каналів, які його підтримують.         |
| `maxEventsPerWindow` | `20`                      | Кількість подій, якими пара ботів може обмінятися у вікні. |
| `windowSeconds`      | `60`                      | Тривалість ковзного часового вікна.                        |
| `cooldownSeconds`    | `60`                      | Час блокування після перевищення парою ліміту.             |

Захист не впливає на повідомлення від людей, розгортання з одним ботом, фільтрування власних повідомлень або відповіді ботів, які не перевищують ліміт.

## Налаштування спільних значень за замовчуванням

Задайте `channels.defaults.botLoopProtection` один раз, щоб надати всім каналам, які підтримують цю функцію, однакову базову конфігурацію. Перевизначення на рівні каналу, облікового запису та кімнати все одно дають змогу окремо налаштовувати відповідні середовища.

```json5
{
  channels: {
    defaults: {
      botLoopProtection: {
        maxEventsPerWindow: 20,
        windowSeconds: 60,
        cooldownSeconds: 60,
      },
    },
  },
}
```

Задавайте `enabled: false` лише тоді, коли політика вашого каналу навмисно дозволяє розмови між ботами без автоматичного блокування.

## Перевизначення для каналу, облікового запису або кімнати

Канали, які підтримують цю функцію, накладають власну конфігурацію на спільні значення за замовчуванням окремо для кожного ключа. Порядок пріоритету, від найвужчої області:

1. `channels.<channel>.<room-or-space>.botLoopProtection`, коли канал підтримує перевизначення для окремих розмов
2. `channels.<channel>.accounts.<account>.botLoopProtection`, коли канал підтримує облікові записи
3. `channels.<channel>.botLoopProtection`, коли канал підтримує значення за замовчуванням верхнього рівня
4. `channels.defaults.botLoopProtection`
5. вбудовані значення за замовчуванням

```json5
{
  channels: {
    defaults: {
      botLoopProtection: {
        maxEventsPerWindow: 20,
      },
    },
    discord: {
      botLoopProtection: {
        maxEventsPerWindow: 8,
      },
      accounts: {
        secondary: {
          allowBots: "mentions",
          botLoopProtection: {
            maxEventsPerWindow: 5,
            cooldownSeconds: 90,
          },
        },
      },
    },
    googlechat: {
      allowBots: true,
      groups: {
        "spaces/AAAA": {
          botLoopProtection: {
            maxEventsPerWindow: 5,
          },
        },
      },
    },
    matrix: {
      allowBots: "mentions",
      groups: {
        "!roomid:example.org": {
          botLoopProtection: {
            maxEventsPerWindow: 5,
          },
        },
      },
    },
    slack: {
      allowBots: "mentions",
      botLoopProtection: {
        maxEventsPerWindow: 8,
      },
    },
  },
}
```

## Підтримка каналами

- Discord: нативні дані `author.bot`, згруповані за обліковим записом Discord, каналом і парою ботів.
- Google Chat: нативні дані `sender.type=BOT` для прийнятих повідомлень від ботів, згруповані за обліковим записом, простором і парою ботів.
- Matrix: налаштовані облікові записи ботів Matrix, згруповані за обліковим записом Matrix, кімнатою та налаштованою парою ботів.
- Slack: нативні дані `bot_id` для прийнятих повідомлень від ботів, згруповані за обліковим записом Slack, каналом і парою ботів.

Канали, які не надають надійної ідентичності вхідного бота, продовжують використовувати звичайні фільтри власних повідомлень і політик доступу. Їм не слід вмикати цей захист, доки вони не зможуть ідентифікувати обох учасників пари ботів.

Докладніше про реалізацію plugin див. у розділі [середовище виконання SDK](/uk/plugins/sdk-runtime#reusable-runtime-utilities).
